19

我的代码如下:

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

4

3 回答 3

21

必须InputStream在获得任何影响之前设置标头-IllegalStateException如果连接已经打开,则会抛出一个。

至于User-Agent具体的报头,如果已设置,则应发送。

请参阅URLConnection JavaDoc。

于 2008-12-01T17:51:21.810 回答
4

要回答这个问题,代码是正确的。在 getInputStream() 的那一刻,一个 HTTP get 被发送到目标服务器。

关于用户代理的旁注,如果您不设置它, URLConnection 无论如何都会发送默认的,即:

User-Agent: Java/1.6.0_24 (varies depending on your java version)
于 2011-08-05T12:55:16.143 回答
-2

我建议不要使用 URLConnection 等低级结构。有很多用于发送 HTTP 请求的库,其中最突出的是 Apache HTTP Client。

于 2012-09-13T09:01:37.193 回答