gpt4 book ai didi

c++ - 在C++/C中使用CURL发出带有数据文件的GET HTTP请求

转载 作者:行者123 更新时间:2023-12-02 10:15:40 29 4
gpt4 key购买 nike

在命令行中使用CURL:

curl -d @%1 -X GET https://blah-blah

这在Windows批处理文件中,我在命令行中传递文件名。使用此功能,我可以发出带有大量输入参数的文件中发送的服务调用,并且收到大量输出。

对于我的一生,当我尝试进行专业语法测试时,我无法使其正常工作。因为它可以在命令上完成,所以它必须是可能的。但是,当我设置

curl_easy_setopt(m_Curl, CURLOPT_HTTPGET, 1);

即使设置了回调,我也无法上传文件

如果我使用:
curl_easy_setopt(m_Curl, CURLOPT_UPLOAD, 1L);

即使我尝试强制将 header 设为GET, call 也会变为“PUT”。我按照文档进行操作,可以看到这是已记录的行为。但是,避免这种违约的途径是什么?

任何指导将不胜感激。

谢谢,

斯坦

最佳答案

严格禁止,但您不应该发送带有GET请求的正文。另一方面,服务器应该能够使用body处理GET请求,但响应不应依赖于body的内容。

如果确实需要使用GET发送包含正文的请求,则可以使用CURLOPT_CUSTOMREQUEST更改方法的值。这不会改变 curl 的行为。此代码段将使用GET上传数据:

  CURL* curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_PORT, port);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");

const auto* file = fopen(filename.c_str(), "r");
curl_easy_setopt(curl, CURLOPT_READDATA, file);
curl_easy_setopt(
curl, CURLOPT_INFILESIZE_LARGE, static_cast<curl_off_t>(filesize));

curl_easy_perform(curl);
}

关于c++ - 在C++/C中使用CURL发出带有数据文件的GET HTTP请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62012186/

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