2012-01-11 43 views
0

我通过传递会话ID和URL来访问网页,输出是HTML响应。 我想用jSoup来解析这个响应并获取标签元素。 我看到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) 

基本上entity.getContent()具有具有作为字符串connect方法要传递的HTML响应。但它不起作用。

回答

1

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

或者,您也可以直接继续使用的HttpClient烧制HTTP请求和维护饼干,并通过替代饲料的HttpResponseStringJsoup#parse()

因此它应该做的事:

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

顺便说一句,你不一定需要创建一个全新的HttpClient的后续请求。只需重用已经创建的httpclient即可。你的获得答复的方式是String也很笨拙。上例中的第二行显示了如何以最简单的方式进行操作。

0

它显示了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

我编辑了我的pududo代码。您可以看到我已登录到网站并通过了Cookie。 – JNPW 2012-01-11 22:24:54