我尝试使用jsoup登录“ http://pawscas.usask.ca/cas-web/login”后获取信息。我已经尝试了下面的内容,但它似乎没有用,任何帮助将不胜感激,谢谢。
Connection.Response res = null;
try {
res = Jsoup.connect("http://pawscas.usask.ca/cas-web/login")
.data("username", "user")
.data("password", "pass")
//.data("It", "some data")
//.data("execution", "some data")
//.data("_eventId", "submit")
.method(Method.POST)
.execute();
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println(res.cookies());
//This will get you cookies
Map<String, String> loginCookies = res.cookies();
Document doc = null;
try {
doc = Jsoup.connect("https://paws5.usask.ca/web/home-community#mycourses")
.cookies(loginCookies)
.get();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(doc.toString());
最佳答案
尝试这个伙伴,基本上问题似乎是您随请求提供的数据不足,您需要包括所有输入字段。
其中两个输入是一个随机生成的数字,似乎与您的会话相关联(一个名为lt
和execution
的数字),因此首先需要获取它们,然后将其与数据一起传递。
Connection.Response initialResponse = null;
try {
// get "lt" and "execution" value
initialResponse = = Jsoup.connect("http://pawscas.usask.ca/cas-web/login").method(Method.GET).execute();
Document doc = initialResponse.parse();
// get lt
Element lt = doc.select("input[name=lt]").first();
String ltVal = lt.attr("value");
// get execution
Element execution = doc.select("input[name=execution]").first();
String executionVal = execution.attr("value");
// get cookies
Map<String, String> cookies = initialResponse.cookies();
// now do the login
res = Jsoup.connect("http://pawscas.usask.ca/cas-web/login")
.data("username", "user")
.data("password", "pass")
.data("lt", ltVal)
.data("execution", executionVal)
.data("_eventId", "submit")
.cookies(cookies)
.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36")
.method(Method.POST)
.execute();
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println(res.cookies());
cookies.putAll(res.cookies());
Document doc = null;
try {
doc = Jsoup.connect("https://paws5.usask.ca/web/home-community#mycourses")
.cookies(cookies)
.get();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(doc.toString());