当前位置: 首页 > 知识库问答 >
问题:

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

衡子琪
2023-03-14

在这个网站上,你可以输入你的学生卡号,然后它会显示卡上还有多少钱。在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”),我没有得到错误,但我没有得到正确的站点(它基本上说是错误的卡号)。有什么建议吗?

编辑2:现在有点用了。如果我添加更多cookie信息,它会显示我还剩多少钱(太好了!)。但是,如果我更改卡号(给我的朋友),我仍然会得到我自己卡上还剩多少钱。我想这和cookie有关?添加新cookie会话有什么建议吗?

编辑3:现在我可以在发送数据前获得cookies,但还是不行。我试着发送编码和解码后的数据,但都没用。

        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个答案

劳昊明
2023-03-14

你绝对可以用Jsoup来做这件事。事实上,我已经成功地使用Jsoup从一个图书馆网站上检索到一个用户的信息。无论如何,我会给你提供我完成这项任务的步骤。

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

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

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

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();

< code>url是请求地址,在您的情况下是< code > http://kortladdning 3 . chalmerskonferens . se/card load _ order . aspx 。< code>userAgent告诉服务器您的浏览器详细信息,< code>data是您输入姓名的地方

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

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

更新

我看到您正在传递cookie的硬编码字符串值,我认为这是您出现问题的原因。您如何检索您的cookie?每次您提出请求或登录时,会话的Cookie都会更改,您应该动态保存和传递Cookie。

您可以通过调用< code>res.cookiess()来获取cookie

 类似资料:
  • 服务器推送的工作原理是在响应请求后立即发送js、css、图像等,而不是等待客户端接收html、解析它并请求资源,从而节省往返。但是,将js、css、图像、字体等推送给,而这些相同的文件在一分钟前获取时已经被客户端下载,这完全是对带宽的浪费,因为客户端已经拥有这些文件。 为每个请求保留状态服务器端似乎很昂贵,而且不可能这样做,因为HTTP是无状态的。大概,客户端会在后续访问中重新请求html,以查看

  • 问题内容: 我不知道如何通过JSch Shell通道发送命令。 我这样做,但是不起作用: 然后我读这样的输入: 问题答案: 如果挂起,则意味着您的“ while”永远不会结束(考虑您的代码可能不太可能),或者正在等待其“源”,即线程原因造成的阻塞。 如果没有看到调试信息,我就无法对您的代码进行故障排除。但是作为建议,您尝试过吗?这个想法是将控制台输入传递到“您的”输出,以便您可以“编写”它。为此,

  • 我正在使用新的Firebase平台。我试图让我的应用程序服务器发送消息推送到我的iPhone。 我的设置正在运行,我在网站上的Firebase通知区域手动发送消息,但当我尝试将消息发送到https://fcm.googleapis.com/fcm/send 我没有收到发送到设备的消息。 我正在发送以下内容(带有auth头) 我从POST得到了200个响应,有以下身体: 如果我尝试直接通过Fireb

  • 问题内容: 我将这些标头由服务器发送到客户端: 我希望客户端验证文件在服务器上没有更改,如果没有,则发送“ 200”。 Firefox发送: chrome为什么不刷新页面发送相同的消息?我追求的是.Net运行的行为: 问题答案: 以我的经验,您不仅需要“私有” Cache-Control标头。您需要“ Max-Age”或“ Expires”来强制Chrome重新验证服务器上的内容。 请记住,重新验

  • 问题内容: 最近5个小时,我一直在尝试将json对象发布到PHP脚本中。我已经阅读了所有文档,似乎代码应该可以,但事实并非如此。发出并接收到请求,但是我无法访问发布的json数据,甚至不知道它是否已正确发送。我不断得到一个空的php数组,而不是json数据。 这是php脚本(test.php) 我正在使用来自https://github.com/pokeb/asi-http- request.gi

  • 问题是:在java中,您可以使用ServerSocket(0)在服务器上创建一个套接字,它会选择一个随机端口进行监听。但是,当您在客户机上创建套接字以使用套接字(addr,port)发送消息时,显然无法确定您需要发送到服务器上的哪个端口。除了基本的“如果你输入0,它将选择一个随机端口”之外,我在网络搜索中找不到关于这个选项的任何信息。是否有人知道或拥有可以从客户端解释这个场景应该是什么样子的资源?