在此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();
答案 0 :(得分:2)
你绝对可以使用Jsoup。事实上,我已经使用Jsoup成功地从图书馆网站检索用户的信息。无论如何,我将为您提供完成此任务所遵循的步骤。
第1步:您输入的学生证号码应为表格的输入。只需右键单击您输入学号的区域,然后选择Inspect Element
。在那里,您将能够检查输入和表单的属性。
第2步:密切调查表单并记录所有输入字段(包括隐藏字段)。您需要知道所有字段的name
和value
。您还需要知道表单请求是在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.aspx
。 userAgent
告诉服务器您的浏览器详细信息,data
是您在表单中放置所有输入字段的名称和值对的位置。 cookies
是您放置cookie的地方,您需要检查您的请求是否需要服务器接受cookie,这可以在“cookies”部分的网络选项卡中进行检查(如果不需要cookie,请删除饼干线)。 method
指定您的请求方式。
检索到的res
对象将包含您需要的所有信息,HTML,Cookie和所有内容。
这些只是一般化的步骤。您可能需要根据需要添加更多代码,但基本上这是您处理请求和服务器的方式。
<强>更新强>
我看到你传递了cookie的硬编码字符串值,我相信这是你问题的原因。你是如何检索你的cookie的?每次发出请求或登录时,会话的Cookie都会更改,您应该保存并动态传递Cookie。
您可以致电res.cookies()