Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java URLConnection setRequestProperty vs addRequestProperty_Java_Http_Http Headers_Urlconnection - Fatal编程技术网

Java URLConnection setRequestProperty vs addRequestProperty

Java URLConnection setRequestProperty vs addRequestProperty,java,http,http-headers,urlconnection,Java,Http,Http Headers,Urlconnection,假设我正在与web服务器进行HTTP对话,我将接受html或文本,但更喜欢html。换句话说,标题应该是(我想!) 接受:text/html,text/* 我正在使用Java,所以我有一个URLConnection。我应该使用: myUrlConnction.setRequestProperty("Accept", "text/html"); myUrlConnction.addRequestProperty("Accept", "text/*"); 或 或者它们是等效的 一般来说,我看到的大

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

接受:text/html,text/*

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

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

或者它们是等效的


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

第一个代码段将产生两个接受头,而第二个代码段将产生一个带有两个选择器的接受头

事实上,它们是等价的

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

如果必须指定多个介质范围,并且它们同样特定,则可以添加q参数


来源:http 1.1规范():

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

  • 设置请求属性>>设置常规请求属性。如果具有该键的属性已存在,将用新值覆盖其值

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


  • 有关更多信息,请浏览

    谢谢。不知何故,我认为顺序对偏好很重要,但是,阅读文档后,我发现事实并非如此。如果媒体类型同样特定,例如application/xml和application/json,该怎么办。顺序重要吗?还是需要使用q值来设置首选项?
    myUrlConnction.setRequestProperty("Accept", "text/html, text/*");