【问题标题】:URLConnection setRequestProperty vs addRequestPropertyURLConnection setRequestProperty vs addRequestProperty
【发布时间】:2012-07-12 14:52:32
【问题描述】:

假设我正在与 Web 服务器进行 HTTP 通信,我将接受 html 或文本,但更喜欢 html。换句话说,标题应该说(我认为!)

接受:text/html, text/*

我使用的是 Java,所以我有一个 URLConnection。我应该使用:

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

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

或者它们是等价的???

一般来说,我看到的大多数第三方代码似乎并不太担心这些标头的顺序或多个值,所以我想知道它最终是如何工作的。

【问题讨论】:

    标签: java http http-headers urlconnection


    【解决方案1】:

    setRequestProperty和addRequestProperty的基本区别是:-

    1. setRequestProperty>> 设置一般请求属性。如果带有键的属性已经存在,用新值覆盖它的值。

    2. addRequestProperty >> 添加由键值对指定的通用请求属性。此方法将不会覆盖与同一键关联的现有值。

    欲了解更多信息,请浏览api doc

    【讨论】:

      【解决方案2】:

      第一个代码 sn-p 将产生两个接受标头,而第二个代码 sn-p 将产生一个带有两个选择器的接受标头。

      它们实际上是等价的。

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

      如果您必须指定多个媒体范围,并且它们同样具体,您可以添加 q 参数。

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

      【讨论】:

      • 谢谢。不知何故,我认为顺序对偏好很重要,但是,阅读文档,我发现它并不重要。如果媒体类型同样具体,例如应用程序/xml 和应用程序/json。顺序重要还是您需要使用 q 值来设置偏好?
      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多