URLConnection setRequestProperty vs addRequestProperty

*爱你&永不变心* 提交于 2019-12-30 03:03:10

问题


Lets say I'm talking HTTP to a web server, and I will Accept html or text, but prefer html. In other words, the header should say (I think!)

Accept: text/html, text/*

I'm using Java, so I have a URLConnection. Should I use:

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

or

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

or are they equivalent???

In general, most of the third party code I see doesn't seem to worry much about ordering or multiple values of these headers, so I'm wondering how it ends up working.


回答1:


The first code snippet would result in two accept-headers while the second code snippet would give one accept-header with two selectors.

They are in fact equivalent.

The spec also states that the more specific media range have precedence, so both would yield your expected behavior.

If you must specify several media ranges, and they are equally specific, you could add the q-parameter.

Source: http 1.1 spec ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html ) :




回答2:


The basic difference between setRequestProperty and addRequestProperty is:-

  1. setRequestProperty>> Sets the general request property. If a property with the key already exists, overwrite its value with the new value.

  2. addRequestProperty >> Adds a general request property specified by a key-value pair. This method will not overwrite existing values associated with the same key.

For more information browse the api doc



来源:https://stackoverflow.com/questions/11458891/urlconnection-setrequestproperty-vs-addrequestproperty

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!