gpt4 book ai didi

c libcurl POST 不能始终如一地工作

转载 作者:数据小太阳 更新时间:2023-10-29 02:19:59 25 4
gpt4 key购买 nike

我正在尝试使用 libcurl 将 xml 数据从 c 程序发布到网站。当我在 linux 中使用命令行程序时,像这样 curl 它工作正常:

curl -X POST -H 'Content-type: text/xml' -d '我的 xml 数据' http://test.com/test.php

(为了安全我更改了实际数据)

但是,一旦我尝试使用 libcurl 编写 C 代码,它几乎每次都失败,但偶尔会成功。这是我的 C 代码:

CURL *curl;
CURLcode res;

curl = curl_easy_init();

if(curl)
{
curl_easy_init(curl, CURLOPT_URL, "http://test.com/test.php");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, xmlString.c_str());
curl_easy_perform(curl);
}

curl_easy_cleanup(curl);

我将这段代码放入一个大约每 10 秒运行一次的循环中,并且大约每 4 或 5 次调用才会成功。我从服务器返回错误消息“找不到 XML 头”。

我尝试指定 HTTP header :

struct curl_slist *chunk = NULL
chunk = curl_slist_append(chunk, "Content-type: text/xml");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);

但是我没有任何运气。有什么想法吗?

最佳答案

试试这个:

CURL *curl = curl_easy_init(); 
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "http://test.com/test.php");
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, xmlString.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, xmlString.length());
struct curl_slist *slist = curl_slist_append(NULL, "Content-Type: text/xml; charset=utf-8"); // or whatever charset your XML is really using...
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist);
curl_easy_perform(curl);
curl_slist_free_all(slist);
curl_easy_cleanup(curl);
}

关于c libcurl POST 不能始终如一地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4442907/

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