Java jsoup connect参数
我通过传递会话id和url访问网页,输出是HTML响应。 我想使用jSoup来解析这个响应并获取标记元素。 我看到Jsoup中的示例使用字符串来建立连接。我该怎么做 伪代码: 我尝试了上面的方法,得到了这个异常Java jsoup connect参数,java,httpclient,jsoup,Java,Httpclient,Jsoup,我通过传递会话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:
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响应,该响应必须作为字符串传递给connect方法。但它不起作用 它显示http错误401,这意味着
类似于403禁止,但特别适用于可能进行身份验证但失败或尚未提供身份验证的情况
因此,我认为您需要使用java代码登录网站,或者通过代码发送cookie来识别自己。Apache Commons HttpClient和Jsoup不共享同一cookie存储。基本上,您需要传递与HttpClient通过Jsoup的
连接
检索回来的cookies相同的cookies。你可以在这里找到一些具体的例子:
Jsoup()将其HttpResponse
作为String
提供
因此,这应该做到:
HttpResponse httpResponse = httpclient1.execute(httpget, httpContext);
String html = EntityUtils.toString(httpResponse.getEntity());
Document doc = Jsoup.parse(html, testUrl);
// ...
顺便说一下,您不一定需要为后续请求创建一个全新的HttpClient
。只需重用您已经创建的httpclient
。另外,以String
的形式获取响应的方法也很笨拙。上面示例中的第二行显示了如何以最简单的方式执行此操作 我已经编辑了我的pesudo代码。你可以看到我已登录到该网站并传递了cookies。