Có cách nào để Jsoup tải tài liệu từ trang web có xác thực truy cập cơ bản không?Kết nối Jsoup với xác thực truy cập cơ bản
15
A
Trả lời
31
Với HTTP basic access authentication bạn cần gửi tiêu đề Authorization
cùng với giá trị "Basic " + base64encode("username:password")
.
Ví dụ: (Với sự giúp đỡ của 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();
// ...
(đặc điểm kỹ thuật rõ ràng của mã hóa ký tự trong getBytes()
được bỏ qua cho ngắn gọn như tên đăng nhập và vượt qua thường là đồng bằng US-ASCII
anyway; bên cạnh đó, Base64 luôn tạo US-ASCII
bytes)
5
//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();
Oh yeah. Lỗi của tôi. –