我一直在用C++开发一个应用程序,有些部件需要连接到http服务器,我成功地发送了GET和HEAD请求,并检索了网页。
目前,我试图发送一个要求登录信息的网站,它类似于GET请求,然而,我不知道如何写它。
让我们说:
POST /users/login HTTP/1.1
HOST: www.example.com
Content-Length: 50,
username: ME
password: pass然后接收身份验证以检索所需的登录页面,
我怎么写我的帖子请求!?
该网站使用表单身份验证。我的意思是,有一个框可以输入电子邮件地址和密码,然后点击提交。据我所知,这是用JS写的。
任何帮助或指导都会受到感谢。
发布于 2011-03-07 07:24:43
尝试将您的请求重写为:
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论坛通常使用的那样。
发布于 2011-03-07 09:45:01
POST是诸如GET、HEAD等http方法之一,很少有关于HTTP本身的基本知识。它是一种基于文本的协议(您可以使用telnet客户端连接到服务器的端口80,比如putty,然后手动输入整个请求)。
第一行包含方法(GET、HEAD、POST等)、URL路径和您支持的HTTP协议版本。我建议使用HTTP1.0,因为您不会在同一个连接内发送多个请求。这很难实现。
下一组行称为标头,每行包含一个键(内容类型、内容长度、主机等)和一个由':‘分隔的值。
那么,所发送的内容就是请求的主体。这些信息必须被加密。通读http://www.w3schools.com/tags/ref_urlencode.asp
现在来看看您的问题,如果您已经知道如何执行GET,那么在这个假设的基础上,需要执行以下步骤。
内容-类型:应用程序/x-www-格式-用户编码的内容-长度:
作为主体发送包含inputname1=value1&inputname2=valule2
获得信息。
希望这能有所帮助。如果您想知道更多的内容,请阅读http://www.w3.org/Protocols/HTTP/1.0/draft-ietf-http-spec.html
https://stackoverflow.com/questions/5216006
复制相似问题