首页 文章

URLConnection setRequestProperty vs addRequestProperty

提问于
浏览
14

让我说我正在谈论HTTP到Web服务器,我会接受HTML或文本,但更喜欢HTML . 换句话说, Headers 应该说(我想!)

接受:text / html,text / *

我正在使用Java,所以我有一个URLConnection . 我应该使用:

myUrlConnction.setRequestProperty("Accept", "text/html");
myUrlConnction.addRequestProperty("Accept", "text/*");

要么

myUrlConnction.setRequestProperty("Accept", "text/html, text/*");

或者他们是等同的???

一般来说,我看到的大多数第三方代码似乎并不担心这些 Headers 的排序或多个值,所以我想知道它是如何最终起作用的 .

2 回答

  • 14

    第一个代码段会产生两个accept-headers,而第二个代码段会产生一个带有两个选择器的accept-header .

    它们实际上是等价的 .

    该规范还指出更具体的媒体范围具有优先权,因此两者都会产生您预期的行为 .

    如果必须指定多个媒体范围,并且它们具有相同的特定范围,则可以添加q参数 .

    来源:http 1.1规范(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html):

  • 6

    The basic difference between setRequestProperty and addRequestProperty is:-

    • setRequestProperty>> 设置常规请求属性 . 如果具有密钥的属性已存在,则 overwrite 其值为新值 .

    • addRequestProperty >> 添加键值对指定的常规请求属性 . 此方法将 not overwrite 与相同键关联的现有值 .

    有关更多信息,请浏览api doc

相关问题