使用jsoup登录网站

时间:2015-09-21 14:57:54

标签: java jsoup

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

1 个答案:

答案 0 :(得分:0)

您应同时使用getpost
首先,您必须向get - http://kortladdning3.chalmerskonferens.se/Default.aspx发送没有参数的URL请求。服务器会回复一些Cookie,以及您稍后将使用的两个值 - __VIEWSTATE__EVENTVALIDATION。这些值因请求而异,因此您无法像使用硬编码值那样使用 提取这些值后,发送post请求,其中包含您现在执行的相同字段 你可以在这里查看一个非常类似的程序 - Problems submitting a login form with Jsoup