我正在尝试使用此Jsoup代码解析网址:
Document doc = Jsoup.connect("http://www.*url*.com").get();
String title = doc.title();
System.out.println("title: "+title);
我总是得到以下错误
Exception in thread "main" java.io.IOException: 403 error loading URL http://www.*url*.com
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:327)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:130)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:119)
at HttpRequestPoster.main(HttpRequestPoster.java:151)
我的电脑是网络的成员,由kerio winroute防火墙控制。在互联网连接之前,我们从网络浏览器连接到防火墙。原因一定是这个。我该如何解析网址?
答案 0 :(得分:2)
设置用户代理对我有用。
Document document = Jsoup.connect(url).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();
答案 1 :(得分:1)
HTTP error 403仅表示Forbidden
。
服务器理解请求,但拒绝履行请求。
换句话说,服务器端根据请求特定信息决定不允许请求者接收响应。这可能有很多原因:请求标头中缺少特定信息,不允许使用IP地址,不允许用户代理,等等。
您最诚实的赌注是联系相关网站的管理员,要求澄清和许可。您还可以使用真实的Web浏览器并使用像Firebug或Fiddler2这样的HTTP流量跟踪器来跟踪请求/响应详细信息。 Jsoup的HttpConnection
class至少提供了几种方法来在必要时设置标题,cookie和/或用户代理。