On 这个网站 http://kortladdning3.chalmerskonferens.se/,你可以输入你的学生卡号,然后就会显示该卡上还剩多少钱。我想使用JSOUP获取信息。这是我当前的代码,但它不起作用,
String url = "http://kortladdning3.chalmerskonferens.se/CardLoad_Order.aspx";
Connection.Response loginForm = Jsoup.connect(url)
.method(Connection.Method.GET)
.execute();
Document document = Jsoup.connect(url)
.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")
//.data("__VIEWSTATE","%2FwEPDwUHNjA4NDA1NQ9kFgQCAw9kFgoCAQ9kFgICAQ8PFgIeBFRleHQFClBUTSBLb3J0bnJkZAICDxYCHgdWaXNpYmxlaGQCAw8WAh8BaGQCBA8WAh8BaGQCBQ8WAh8BaBYCAgEPEGRkFgBkAgUPDxYCHwAFCShkZXNrdG9wKWRkZGzBhwMIv3yxqKnC0C7%2BPlC0PlDG")
.data("__EVENTVALIDATION", "%2FwEWBAKG7bXPBQLi0uqnCgKF69rWBAK14fOOCgrUt4CBVP4K0VKe0uOPxLSAu26y")
.data("hiddenIsMobile", "desktop")
.data("txtCardNumber", "3819276248xxxxxx")
.data("SavedCardNumber", "")
.data("btnNext","N%C3%A4sta")
.cookies(loginForm.cookies())
.get();
System.out.println(document.html());
我没有太多经验,所以我不知道从哪里寻找问题。一些想法:
- 我应该使用
.post()
or .get()
?
- 在chrome开发者工具中查看时,发布数据是我发送的所有数据
.data(.., ..)
功能。但是如果发送__VIEWSTATE
我收到错误,为什么?
- 我应该发送解密或加密的数据吗? (两者都在 Chrome 开发者工具中提供)。
- 使用的网址正确吗?
你应该同时使用get
and post
:
首先你必须发送get
不带参数的请求URL
- http://kortladdning3.chalmerskonferens.se/Default.aspx http://kortladdning3.chalmerskonferens.se/Default.aspx。服务器回复一些cookie,以及稍后您将使用的两个值 -__VIEWSTATE
and __EVENTVALIDATION
。这些值因请求而异,因此您不能像以前那样使用硬编码值。
提取这些值后,发送post
请求,使用与您现在相同的字段。
您可以在这里查看一个非常相似的过程 -使用 Jsoup 提交登录表单时出现问题 https://stackoverflow.com/questions/31871801/problems-submitting-a-login-form-with-jsoup/31877829#31877829
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)