JSOUP获取网页数据返回403错误(403 error loading URL,connection类)

来源:互联网 发布:淘宝牙齿美白仪有用吗 编辑:程序博客网 时间:2024/04/27 21:45

Refer from http://blog.csdn.net/arvon2012/article/details/7979139

最近做的项目需要利用JSOUP进行网页获取和解析,但是遇到了拒绝访问的问题,返回的结果是:

java.io.IOException: 403 error loading URL http://www.xxx.com/xxx

连接代码是这样的:

[java] view plaincopy
  1. Document doc = Jsoup.connect(urlString).get();  

原本这种方式在大部分时间都可以正确的获取网页代码。

403错误是权限问题拒绝访问,大家都知道的。

我搜了下原因,原来是请求内容不完全,然后我写了如下代码就OK了。

[java] view plaincopy
  1. Document doc = Jsoup.connect(urlString).header("User-Agent""Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2").get();  

 

原因分析:

有些网站的服务器在响应http请求的时候,需要客户端提交的信息比较完善,而在Jsoup的Connection类中这个Header就是完善请求信息用的。

我们的浏览器在请求网页的时候会在请求的头部head中发送一些数据,比如浏览器类型,版本,语言等等。当我们用Jsoup去完成请求网页的工作时,最好也要完善请求包头信息,完成这个工作的就是header方法。

header

Connection header(String name,                  String value)
Set a request header.
Parameters:
name - header name
value - header value
Returns:
this Connection, for chaining
See Also:
Connection.Base.headers()

 

在上面的纠正代码中可以看到我在header里name设置的是User-Agent(表示我要设置的header中的字段,后面的第二个参数value就是对这个字段赋的值)。header value中设置的是操作系统,浏览器,语言类型等等信息(惭愧,我也没完全知道每个值的意思)。这样提交的请求有了比较完善的头信息后,一般的网站server就更乐意服务了。
0 0
原创粉丝点击