2012-01-11 44 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