2016-02-19 28 views
2

我需要刮取具有http基本身份驗證的頁面後面的內容。此外,該網站有ssl。 我到目前爲止寫的是:基本身份驗證登錄後Web刮

Document document = Jsoup.connect("https://someuser:[email protected]").get(); 

但它不起作用。 也試過:

Document document = Jsoup 
        .connect("https://somedomain.com").get(); 
        .header("Authorization", "Basic " + base64login) 
        .get(); 

其中base64login是:

private String title; 
String username = "someuser"; 
String password = "somepass"; 
String login = username + ":" + password; 
public String base64login = Base64.encodeToString(login.getBytes(), Base64.DEFAULT); 

我不知道如何得到它的工作。有人能幫助我嗎?

回答

1

沒有URL很難知道,但我想你的默認Charset編碼不符合網絡服務器的預期。也許試試這個:

public String base64login = new String(
    Base64.encodeBase64(login.getBytes(Charset.forName("UTF-8"))) 
    ); 

這使用org.apache.commons.codec.binary.Base64方法。

登錄應該按照您在第二種方法嘗試完成,即使用"Authorization"標頭。順便說一句 - 你的代碼中有一個錯誤。必須在get之前調用header方法,connect之後沒有分號。

+0

無論如何真正的錯誤是 org.jsoup.HttpStatusException:HTTP錯誤獲取URL。狀態= 401 – Weizen

+0

401錯誤提示錯誤的用戶/密碼組合。見http://www.checkupdown.com/status/E401.html – luksch

+0

我很確定他們是正確的,我通過網絡登錄這些憑據,它的工作原理。 – Weizen