在URLConnection中设置标头的正确方法是什么?

时间:2008-12-01 17:21:51

标签: java header urlconnection

我的代码如下:

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的用户代理(如果有的话)?

3 个答案:

答案 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。