【问题标题】:What is the proper way of setting headers in a URLConnection?在 URLConnection 中设置标头的正确方法是什么?
【发布时间】:2008-12-01 17:21:51
【问题描述】:

我的代码如下:

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

【问题讨论】:

    标签: java header urlconnection


    【解决方案1】:

    标题必须InputStream产生任何影响之前设置 - 如果连接已经打开,则会抛出IllegalStateException

    具体到User-Agent标头,如果设置了就应该发送。

    参见URLConnectionJavaDoc。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • (应该是评论,不回答问题)
        • Apache HTTP 客户端在 Android 框架中不鼓励和弃用。 Google 鼓励使用 HttpURLConnection。
        猜你喜欢
        • 2019-06-03
        • 2023-03-23
        • 1970-01-01
        • 2022-11-08
        • 2016-09-11
        • 2017-12-17
        • 1970-01-01
        • 2013-07-29
        • 2010-11-24
        相关资源
        最近更新 更多