gpt4 book ai didi

c++ - 使用 C++ 提交表单的 Http GET 请求

转载 作者:太空宇宙 更新时间:2023-11-04 13:39:38 24 4
gpt4 key购买 nike

我编写了一个 C++ 程序,它向给定主机发送 http GET 请求并接收应答。我的程序不支持 POST 请求。我知道表单参数可以像这样附加在路径的末尾:

Normal link: http://finance.yahoo.com/q/hp
Link with form parameters: http://finance.yahoo.com/q/hp?s=SNIVX&b=1&a=00&c=1900

到目前为止,通过第二个链接接收对请求的答复工作正常。我在这个网站上也试过,但它似乎不接受表单参数:

http://www.finanzen.net/historische-kurse/Linde?inTag1=1&inMonat1=1&inJahr1=2010&inTag2=30&inMonat2=1&inJahr2=2015&strBoerse=XETRA

我在该网站的页面源代码中查找了键和值。当我单击网站上的相应按钮提交表单时,它使用 POST 请求,这与前面使用 GET 请求的示例不同。对于普通的 GET 请求,它只返回页面,就好像没有给出表单参数一样。

我使用 http 1.0 和 winsock 进行客户端-服务器通信。我的请求是这样构建的:

sprintf(htmlRequest, "GET %s HTTP/1.0\r\nHost: %s\r\nConnection: close\r\n\r\n", file.c_str(), host.c_str());

我可以在不使用 POST 请求的情况下以某种方式在第二个网站上提交表单参数吗?某些网站是否只接受/支持来自 POST 请求的表单参数,而不接受来自 GET 请求的表单参数?

最佳答案

如果您的资源需要通过 POST 方法访问,您应该在 HTTP 请求的主体中传递参数,而不是查询字符串。

您的请求应如下所示:

GET /historische-kurse/Linde HTTP/1.0\r\n
Host: www.finanzen.net\r\n
Connection: close\r\n
\r\n
inTag1=1&inMonat1=1&inJahr1=2010&inTag2=30&inMonat2=1&inJahr2=2015&strBoerse=XETRA

Read more about the structure of a HTTP request .

Read more about the POST method .

P.S.:仅供引用,第二页的作者滥用了 POST 方法。当请求可能导致资源状态发生变化时,应该使用 POST,但在这种情况下,什么都没有改变,我们只是在读取数据。不幸的是,这种事情在 Web 开发人员中很常见,人们对 HTTP 协议(protocol)缺乏基本的了解,并且总是错误地使用它的方法。

关于c++ - 使用 C++ 提交表单的 Http GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28244431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com