【问题标题】:httpUrlConnection set request headerhttpUrlConnection 设置请求头
【发布时间】:2019-01-09 02:59:30
【问题描述】:

我最近开始学习写爬虫,参考别人的代码,部分代码是下载目标网站的http url页面,所以用到了HttpUrlConnection模块,不过这么努力我还是看不懂下面的代码,谁能提供一些基本的参考资料让我理解或解释一下

connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("charset", encoding);
connection.setRequestMethod("GET");
connection.setConnectTimeout( 100000 );
connection.setReadTimeout( 100000 );
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");

first,我不知道为什么connection = (HttpURLConnection) url.openConnection()是这样写的,通常我们写HttpURLConnection connection=new HttpURLConnection(),我的意思是我们通过这种方式创建一个对象;
下一个我的意思是我知道那些设置的语法,这都是关于设置客户端请求的标头,但我只是不知道这些 set sytaxes 用于什么?为什么将它们设置为这些值而不是其他值?

我阅读了Core Java Volume 2的相关章节,但它无法回答我的问题,我google了很多,但找不到关于这些集合语法的解释,任何帮助将不胜感激,谢谢~

【问题讨论】:

    标签: url header web-crawler httpurlconnection


    【解决方案1】:

    Java 中URL 类的openConnection 方法返回一个URLConnection,可以提前转换为HttpURLConnection。您需要它来设置 HTTP 请求的其他必填字段,例如设置请求方法(GET、PUT、POST)。这是您请求中最重要的字段。您应该根据您的要求以及您的要求来决定。您可以使用的读取和连接超时值,通常用于由于服务器端或客户端的互联网连接问题而导致请求未返回响应的情况。最后,常用的setRequestProperty 方法为您的请求设置标头。

    con.setRequestProperty("Content-Type", "application/json");
    

    被广泛使用。为了确定respose的内容类型,先调用getHeaderField

    String contentType = con.getHeaderField("Content-Type");
    

    注意:如果您的请求需要额外的参数,您应该将它们放在一个映射中并输出到您的请求中。

    【讨论】:

    • thanks@golyadkin,解释的很清楚,我也找了这个视频:youtube.com/watch?v=PUPDGbnpSjw,this帮助我了解客户端和Web服务器如何相互通信以及外行级别的http协议底层理论,仅供参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2013-04-24
    相关资源
    最近更新 更多