我通过传递会话id和url来访问网页,输出是一个HTML响应。我想使用jSoup来解析这个响应并获取标记元素。我看到Jsoup中的示例需要一个字符串来建立连接。我该如何继续。
伪代码:
我尝试了上面的方法,得到了这个异常
java.io.IOException: 401 error loading URL http://www.abc.com/index
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:387)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132)基本上,连接具有HTML响应,该响应必须作为字符串传递给entity.getContent()方法。但它不起作用。
发布于 2012-01-12 06:43:21
Apache Commons HttpClient和Jsoup不共享相同的cookie存储。基本上,您需要通过Jsoup的Connection传递回与HttpClient检索到的cookie完全相同的cookie。你可以在这里找到一些具体的例子:
或者,您也可以继续使用HttpClient来触发HTTP请求和维护cookies,而不是通过Jsoup#parse()将其HttpResponse作为String提供。
所以应该是这样的:
HttpResponse httpResponse = httpclient1.execute(httpget, httpContext);
String html = EntityUtils.toString(httpResponse.getEntity());
Document doc = Jsoup.parse(html, testUrl);
// ...顺便说一句,您不一定需要为后续请求创建一个全新的HttpClient。只需重用已创建的httpclient即可。另外,作为String获取响应的方法也很笨拙。上面示例中的第二行显示了如何在最简单的情况下完成此操作。
发布于 2012-01-12 06:18:13
它显示http错误401,这意味着
Similar to 403 Forbidden, but specifically for use when authentication is possible but has failed or not yet been provided。
因此,我认为您需要使用java代码登录网站,或者通过代码发送cookie来表明自己的身份。
https://stackoverflow.com/questions/8827436
复制相似问题