首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么无法设置Java http User-Agent?

为什么无法设置Java http User-Agent?
EN

Stack Overflow用户
提问于 2011-08-08 00:16:45
回答 3查看 7.1K关注 0票数 0

我尝试这样设置http请求的用户代理:

代码语言:javascript
复制
public BufferedReader readURL(String url){
        URL urlcon;
        BufferedReader in = null;
        try {
            urlcon = new URL(url);
            connection = (HttpURLConnection)urlcon.openConnection();

            System.setProperty("http.agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
            connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
            System.out.println(connection.getHeaderField("User-Agent"));
            connection.connect();
            in = new BufferedReader(
                                    new InputStreamReader(
                                        connection.getInputStream()));

            String header = connection.getHeaderField(0);
            System.out.println(header);
            System.out.println("---Start of headers---");
            int i = 1;
            while ((header = connection.getHeaderField(i)) != null) {
                String key = connection.getHeaderFieldKey(i);
                System.out.println(((key==null) ? "" : key + ": ") + header);
                i++;
            }
            System.out.println(connection.getHeaderField("http.agent"));
            System.out.println("---End of headers---");
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return in;
    }

我得到的是User-Agent null:

HTTP/1.0 200正常

-标头的开头

服务器: Apache

Cache-Control: max-age=10

过期时间: Sun,07 Aug,2011 16:09:26 GMT

变化:接受-编码

Content-Type: text/html

内容长度: 163582

日期: Sun,07 Aug,2011 16:09:20 GMT

X-Varnish: 889692780 889684459

年龄:4岁

连接:保持连接

X-Bip: 889692780 70148

途径: 1.1 CachOS

-报头末尾

为什么不能设置User-Agent?

EN

回答 3

Stack Overflow用户

发布于 2011-08-08 00:18:12

使用setHeader(),而不是setRequestProperty。

票数 3
EN

Stack Overflow用户

发布于 2017-01-15 06:44:45

设置系统属性:"http.agent“将更改您的连接头:"User-Agent",但请注意,according to documentation您的java版本仍在其中:

其他HTTP属性

http.agent (默认为“Java/”)定义了在http请求中User-Agent请求头部中发送的字符串。

请注意,字符串“Java/”将附加到属性中提供的字符串之后(例如,如果使用-Dhttp.agent=“foobar”,则如果VM的版本为1.5.0,则用户代理标头将包含“foobar Java/1.5.0”)。此属性仅在启动时选中一次。

请注意,属性在启动时只检查一次,因此您可能希望首先设置属性,然后创建第一个url并进行连接。

要验证是否发送了正确的报头,可以使用"tcpdump“。用法:

代码语言:javascript
复制
tcpdump -n dst host stackoverflow.com -vvvv
票数 1
EN

Stack Overflow用户

发布于 2011-08-08 02:32:32

服务器返回报头信息。我猜"User-Agent“还不够重要,不应该返回。它没有返回并不意味着它没有被发送。

我有一个显示标题信息的小工具(ieHTTPHeader)。当我在这个页面上刷新时,这是发送和返回的第一组标头:

获取/questions/6973981/why-cant-i-set-java-http-user-agent HTTP/1.1

接受:/

推荐人:https://stackoverflow.com/questions/tagged/java?page=2&sort=newest&pagesize=15

Accept-Language:简体中文

User-Agent: Mozilla/4.0 (兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0)

Accept-Encoding: gzip、deflate

主持人: stackoverflow.com

连接:保持连接

Cookie:__utmc=140029553;__utma=140029553.1370458634.1310761265.1312727448.1312739618.123;__utmz=140029553.1312739618.123.123.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=yahoo%20finance%20api%20java;__qca=P0-1025379872-1310761265343;__utmc=140029553;usr=t=cEyCYO7bXECF&s=X6DJTj5kuY8H;__utmb=140029553.15.10.1312739618

HTTP/1.1 200正常

Cache-Control: public,max-age=60

Content-Type: text/html;charset=utf-8

Content-Encoding: gzip

过期时间: Sun,08,2011 18:25:43 GMT

最后修改时间: Sun,07 Aug,2011 18:24:43 GMT

变化:*

日期: Sun,07 Aug 2011 18:24:42 GMT

内容长度: 12040

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6973981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档