[英]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.