在 URL 连接中设置标头的正确方法是什么?

2022-09-02 13:16:20

我的代码如下所示:

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();

如果我在获得之前设置标头可以吗?我的标头会被发送,还是服务器会看到默认的 user-agent(如果有)?InputStreamURLConnection


答案 1

标头必须在获得任何影响之前设置 - 如果连接已打开,将抛出 an。InputStreamIllegalStateException

具体到标头,如果已设置,则应发送标头。User-Agent

请参阅 URLConnection JavaDoc。


答案 2

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

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

User-Agent: Java/1.6.0_24 (varies depending on your java version)