web-dev-qa-db-ja.com

基本アクセス認証を使用したJsoup接続

Jsoupに、基本アクセス認証を使用してWebサイトからドキュメントをロードする方法はありますか?

19
user982940

HTTP基本アクセス認証 の場合、"Basic " + base64encode("username:password")の値とともにAuthorizationヘッダーを送信する必要があります。

例えば。 (ほとんど助けを借りずに Apache Commons Codec Base64 ):

_String username = "foo";
String password = "bar";
String login = username + ":" + password;
String base64login = new String(Base64.encodeBase64(login.getBytes()));

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

// ...
_

getBytes()での文字エンコードの明示的な指定は、ログイン名とパスが単純であることが多いため、簡潔にするために省略されています_US-ASCII_;さらに、Base64は常に_US-ASCII_バイト)

34
BalusC
//Log in
Response res = Jsoup
    .connect("url")
    .data("loginField", "login")
    .data("passwordField", "password")
    .method(Method.POST)
    .execute();

Document doc = res.parse();


//Keep logged in
Map<String, String> cookies = res.cookies();

Document doc2 = Jsoup
    .connect("url")
    .cookies(cookies)
    .get();