首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsoup连接参数

jsoup连接参数
EN

Stack Overflow用户
提问于 2012-01-12 06:10:45
回答 2查看 3.4K关注 0票数 0

我通过传递会话id和url来访问网页,输出是一个HTML响应。我想使用jSoup来解析这个响应并获取标记元素。我看到Jsoup中的示例需要一个字符串来建立连接。我该如何继续。

伪代码:

我尝试了上面的方法,得到了这个异常

代码语言:javascript
复制
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()方法。但它不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-12 06:43:21

Apache Commons HttpClient和Jsoup不共享相同的cookie存储。基本上,您需要通过Jsoup的Connection传递回与HttpClient检索到的cookie完全相同的cookie。你可以在这里找到一些具体的例子:

或者,您也可以继续使用HttpClient来触发HTTP请求和维护cookies,而不是通过Jsoup#parse()将其HttpResponse作为String提供。

所以应该是这样的:

代码语言:javascript
复制
HttpResponse httpResponse = httpclient1.execute(httpget, httpContext);
String html = EntityUtils.toString(httpResponse.getEntity());
Document doc = Jsoup.parse(html, testUrl);
// ...

顺便说一句,您不一定需要为后续请求创建一个全新的HttpClient。只需重用已创建的httpclient即可。另外,作为String获取响应的方法也很笨拙。上面示例中的第二行显示了如何在最简单的情况下完成此操作。

票数 1
EN

Stack Overflow用户

发布于 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来表明自己的身份。

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

https://stackoverflow.com/questions/8827436

复制
相关文章

相似问题

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