我一直在使用C++
开发一个应用程序,有些部分需要连接到http服务器,我设法发送 GET 和 HEAD 请求并检索网页
目前,我正在尝试将 POST 请求表单发送到需要登录信息的网站,它类似于 GET 请求,但是,我不喜欢不知道如何写它。
让我们说:
POST /users/login HTTP/1.1
HOST: www.example.com
Content-Length: 50,
username: ME
password: pass
然后接收身份验证以检索登录所需的页面,
如何编写 POST 请求??
该网站使用表单身份验证。我的意思是有一个框输入电子邮件地址和密码,然后点击提交。据我所知,它是用 JS 编写的。
感谢任何帮助或指示。
答案 0 :(得分:5)
尝试将您的请求重写为:
POST /users/login HTTP/1.1
HOST: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
username=ME&password=pass
我认为'25'是正确的长度。
作为练习,您可以下载允许像WireShark一样进行调试的HTTP工具,然后登录到一般论坛,该论坛没有安全登录系统,例如通常用于phpbb论坛的系统。
答案 1 :(得分:0)
POST是GET,HEAD等http方法之一, 关于HTTP本身的基础知识很少。它是一个基于文本的协议(您可以使用像putty这样的telnet客户端连接到服务器的端口80,并手动输入整个请求)。
第一行包含方法(GET,HEAD,POST等),URL路径和您支持的HTTP协议版本。我建议使用HTTP1.0,因为你不会在同一个连接中发送多个请求。这很难实现。
下一组行称为标题,每行包含一个键(内容类型,内容长度,主机等),以及由':'分隔的值。
然后发送的是请求的正文。信息必须是urlencoded。仔细阅读http://www.w3schools.com/tags/ref_urlencode.asp
如果您已经知道如何执行GET,那么现在就出现问题,然后根据该假设进行POST,需要执行以下步骤。
内容类型:application / x-www-form-urlencoded 内容长度:
希望这会有所帮助。如果您想了解更多信息,请阅读http://www.w3.org/Protocols/HTTP/1.0/draft-ietf-http-spec.html