[英]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.