使用jsoup登录网站

在这个网站上 ,您可以输入您的学生卡号码,然后它将显示该卡上还剩多少钱。 我想使用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()还是.get()
  • 在查看chrome devoloper工具时,post数据是我用.data(.., ..)函数发送的所有数据。 但是如果发送__VIEWSTATE我收到错误,为什么?
  • 我应该发送解密或加密的数据吗? (两者都以chrome devoloper工具呈现)。
  • 我使用正确的URL?

你应该使用getpost
首先,您必须向URL发送不带参数的get请求 – http://kortladdning3.chalmerskonferens.se/Default.aspx 。 服务器回复一些cookie,以及稍后将使用的两个值 – __VIEWSTATE__EVENTVALIDATION 。 这些值因请求而异,因此您不能像使用硬编码值那样使用。
提取这些值post ,使用您现在执行的相同字段发送post请求。
您可以在此处查看一个非常类似的过程 – 使用Jsoup提交登录表单时出现问题