作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试使用 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/
在过去的一个月里,我注意到出现在我的应用程序中的广告(实际上我每天都在使用我的应用程序)是同一个广告。 广告由 AdMob 提供,但我担心如果广告保持不变,我将无法从其他用户那里获得收入。 知道为什么
我是一名优秀的程序员,十分优秀!