我的代码如下:
URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();
在我获得InputStream
之前设置标题是否可以?我的标题会被发送,还是服务器会看到默认的URLConnection
的用户代理(如果有的话)?
答案 0 :(得分:21)
在让InputStream
产生任何影响之前设置标题必须 - 如果连接已经打开,则会抛出IllegalStateException
。
具体到User-Agent
标题,如果已经设置,则应该发送它。
请参阅URLConnection JavaDoc。
答案 1 :(得分:4)
要回答这个问题,代码是正确的。在getInputStream()时,HTTP get被发送到目标服务器。
关于用户代理的附注,如果你没有设置它,URLConnection将发送默认的一个,即:
User-Agent: Java/1.6.0_24 (varies depending on your java version)
答案 2 :(得分:-2)
我建议不要使用URLConnection等低级结构。有很多用于发送HTTP请求的库,其中最突出的是Apache HTTP Client。