[英]jsoup login and parse html
問題是:當我登錄網站時,它每次都指向主頁。 但是我想連接不同的頁面來解析它的html並從中下載,所以上次連接中的文檔指示再次登錄
try {
Connection.Response response = Jsoup.connect("https://10.232.1.220/123Mobile/Portal/")
.userAgent(USER_AGENT)
.sslSocketFactory(utilService.socketFactory())
.method(Connection.Method.GET)
.execute();
//Login
FormElement loginForm = (FormElement)response.parse().select("form[class=login-form]").first();
checkElement("Login Form", loginForm);
Element loginField = loginForm.select("input[name=UserName]").first();
checkElement("Login Field", loginField);
loginField.val(internalConstant.getEbcUsename());
Element passwordField = loginForm.select("input[name=Password]").first();
checkElement("Password Field", passwordField);
passwordField.val(internalConstant.getEbcPassword());
response = loginForm.submit()
.cookies(response.cookies())
.userAgent(USER_AGENT)
.method(Method.POST)
.sslSocketFactory(utilService.socketFactory())
.followRedirects(false)
.execute();
logger.info("home html: " + response.parse());
//target document
Document targetPage = Jsoup.connect("https://10.232.1.220/123Mobile/Portal/Reports/TransactionReport")
.userAgent(USER_AGENT)
.sslSocketFactory(utilService.socketFactory())
.cookies(response.cookies())
.get();
logger.info("target document html: " + targetPage.html());
if (ebcFile.isEmpty()) {
logger.error("file not found");
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Ebc File not found in website");
}
// this.FileDownloaderService.downloadExcelFile(ebcFile);
} catch (IOException e) {
e.printStackTrace();
logger.error("download error " + e.getMessage());
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Failed to download file");
}
問題是提交 cookie 的響應沒有 sessionid 和請求令牌 cookie,所以我從登錄響應中添加了它們。
Connection.Response response = Jsoup.connect(internalConstant.getLoginURL())
.userAgent(USER_AGENT)
.sslSocketFactory(utilService.socketFactory())
.method(Connection.Method.GET)
.execute();
logger.info("response cookies after parse login page: " + response.cookies());
String sesionID = response.cookie(your cookie);
String requestCookie = response.cookie(your cookie);
//Login
FormElement loginForm = (FormElement)response.parse().select("form[class=login-form]").first();
checkElement("Login Form", loginForm);
Element loginField = loginForm.select("input[name=UserName]").first();
checkElement("Login Field", loginField);
loginField.val(internalConstant.getEbcUsename());
Element passwordField = loginForm.select("input[name=Password]").first();
checkElement("Password Field", passwordField);
passwordField.val(internalConstant.getEbcPassword());
response = loginForm.submit()
.cookies(response.cookies())
.userAgent(USER_AGENT)
.method(Method.POST)
.sslSocketFactory(utilService.socketFactory())
.execute();
Map<String , String> coky = response.cookies();
coky.put("your cookie", requestCookie);
coky.put("your cookie", sesionID);
logger.info("response cookies after submit: " + coky);
//target document
response = Jsoup.connect(internalConstant.getURL())
.userAgent(USER_AGENT)
.sslSocketFactory(utilService.socketFactory())
.cookies(coky)
.method(Method.GET)
.execute();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.