URLConnection setRequestProperty vs addRequestProperty

2022-09-03 01:06:58

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

接受:文本/html,文本/*

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

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

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

或者它们是等价的???

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


答案 1

setRequestProperty 和 addRequestProperty 之间的基本区别在于:-

  1. setRequestProperty>>设置常规请求属性。如果具有该键的属性已存在,则使用新值覆盖其值。

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

有关更多信息,请浏览 API 文档


答案 2

第一个代码段将产生两个 accept 标头,而第二个代码段将给出一个具有两个选择器的 accept 标头。

它们实际上是等同的。

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

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

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


推荐