在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
的用户代理(如果有的话)?
必须在使InputStream
产生任何影响之前设置标头 – 如果连接已经打开,将抛出IllegalStateException
。
至于User-Agent
标头,如果已经设置,则应该发送它。
请参阅URLConnection JavaDoc。
要回答这个问题,代码是正确的。 getInputStream()时,HTTP get被发送到目标服务器。
关于用户代理的附注,如果你没有设置它,URLConnection将发送默认的一个,这是:
User-Agent: Java/1.6.0_24 (varies depending on your java version)
我建议不要使用URLConnection等低级构造。 有很多用于发送HTTP请求的库,其中最突出的是Apache HTTP Client。