知道要发送到服务器的标头

时间:2015-09-15 15:49:18

标签: java header jsoup

在此website上,您可以输入您的学生卡号码,然后它会显示该卡上还剩多少钱。是否可以在java中使用,例如使用JSOUP?在将卡号发送到服务器时,如何知道我应该使用哪个标题?当我使用chromes开发人员工具时,我会获得有关此标题的信息

Remote Address:95.80....
Request URL:http://kortladdning3.chalmerskonferens.se/CardLoad_Order.aspx
Request Method:GET
Status Code:200 OK
Response Headers
view source
Cache-Control:private
Content-Length:6807
etc...

我可以用某种方式使用这些信息吗?

基本上我想要的是使用JAVA获得多少钱。

修改

这是我目前的代码:

res = 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("txtCardNumber", "3819xxxxxxxxxx")
                .data("__VIEWSTATE",     "balbalblaonglong")
                .data("__EVENTVALIDATION", "/wEWBAKG7bXPBQLi0uqnCgKF69rWBAK14fOOCgrUt4CBVP4K0VKe0uOPxLSAu26y")
                .data("hiddenIsMobile", "desktop")
                .cookie("ASP.NET_SessionId", "kcvawxel4bzg3yqotr22b1ig")
                .method(Method.GET)
                .execute();

这给了我这个错误:

HTTP error fetching URL. Status=500, URL=http://kortladdning3.chalmerskonferens.se/CardLoad_Order.aspx?txtCardNumber=3819276248836621&__VIEWSTATE=%2FwEPDwUHNjA4NDA1NQ9kFgQCAw9kFgoCAQ9kFgICAQ8PFgIeBFRleHQFClBUTSBLb3J0bnJkZAICDxYCHgdWaXNpYmxlaGQCAw8WAh8BaGQCBA8WAh8BaGQCBQ8WAh8BaBYCAgEPEGRkFgBkAgUPDxYCHwAFCShkZXNrdG9wKWRkZGzBhwMIv3yxqKnC0C7%2BPlC0PlDG&__EVENTVALIDATION=%2FwEWBAKG7bXPBQLi0uqnCgKF69rWBAK14fOOCgrUt4CBVP4K0VKe0uOPxLSAu26y&hiddenIsMobile=desktop

如果我只有.data("txtCardNumber", "3819276248836621"),我不会收到错误,但我没有得到正确的网站(它基本上说错误的卡号)。有什么提示吗?

EDIT2: 它现在有用了。如果我添加更多的cookie信息,它将显示我剩下多少钱(太棒了!)。但是,如果我更改卡号(给我的朋友),我仍然可以在我自己的卡上留下多少钱。我想这与饼干有关吗?有关添加新cookie会话的提示吗?

EDIT3: 现在我在发送数据之前得到了cookie,但它仍然不起作用。我尝试发送编码和解码数据,没有任何作用。

        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", "xxxxxxxxxxxx")
                .data("SavedCardNumber", "")
                .data("btnNext","N%C3%A4sta")
                .cookies(loginForm.cookies())
                .get();

1 个答案:

答案 0 :(得分:2)

你绝对可以使用Jsoup。事实上,我已经使用Jsoup成功地从图书馆网站检索用户的信息。无论如何,我将为您提供完成此任务所遵循的步骤。

第1步:您输入的学生证号码应为表格的输入。只需右键单击您输入学号的区域,然后选择Inspect Element。在那里,您将能够检查输入和表单的属性。

第2步:密切调查表单并记录所有输入字段(包括隐藏字段)。您需要知道所有字段的namevalue。您还需要知道表单请求是在GET还是POST

第3步:现在让我们来看看有趣的部分。使用以下代码段向服务器发出请求并检索表单。

Connection.Response res = 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(inputName1, inputValue1
                                     inputName2, inputValue2)
                               .cookies(cookies) //do not add this line if no cookies are required
                               .method(Method.GET)
                               .execute();

url是请求地址,在您的情况下为http://kortladdning3.chalmerskonferens.se/CardLoad_Order.aspxuserAgent告诉服务器您的浏览器详细信息,data是您在表单中放置所有输入字段的名称和值对的位置。 cookies是您放置cookie的地方,您需要检查您的请求是否需要服务器接受cookie,这可以在“cookies”部分的网络选项卡中进行检查(如果不需要cookie,请删除饼干线)。 method指定您的请求方式。

检索到的res对象将包含您需要的所有信息,HTML,Cookie和所有内容。

这些只是一般化的步骤。您可能需要根据需要添加更多代码,但基本上这是您处理请求和服务器的方式。

<强>更新

我看到你传递了cookie的硬编码字符串值,我相信这是你问题的原因。你是如何检索你的cookie的?每次发出请求或登录时,会话的Cookie都会更改,您应该保存并动态传递Cookie。

您可以致电res.cookies()

来获取Cookie