繁体   English   中英

jsoup连接参数

[英]jsoup connect parameter

我通过传递会话ID和URL来访问网页,并且输出是HTML响应。 我想使用jSoup解析此响应并获取标签元素。 我看到Jsoup中的示例使用String来建立连接。 我该如何进行。

伪代码:

我尝试了上述方法并得到了这个例外

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)

基本上, entity.getContent()具有HTML响应,该响应必须作为String传递给connect方法。 但这是行不通的。

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

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

因此,应该这样做:

HttpResponse httpResponse = httpclient1.execute(httpget, httpContext);
String html = EntityUtils.toString(httpResponse.getEntity());
Document doc = Jsoup.parse(html, testUrl);
// ...

顺便说一下,您不必为后续请求创建一个全新的HttpClient 只需重用您已经创建的httpclient 另外,以String形式获取响应的方式也很笨拙。 上面示例的第二行显示了最简单的方法。

它显示了一个HTTP错误401,这意味着

Similar to 403 Forbidden, but specifically for use when authentication is possible but has failed or not yet been provided

因此,我认为您需要使用您的Java代码登录网站或通过通过您的代码发送cookie来识别自己。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM