我正在使用以下命令将JSON数据发送到来自bash的网址:
$ curl -v -d '{xxx:200}&apikey=xxxxx' -X POST http://localhost/xxxx/input/post.json -H "Accept: application/json" -H "Content-Type:application/json"
在C中使用以下内容:
int main(void)
{
CURL *easyhandle;
curl_global_init(CURL_GLOBAL_ALL);
easyhandle = curl_easy_init();
if(easyhandle) {
char *data="json={xxx:200}&apikey=xxxxx";
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(easyhandle, CURLOPT_URL, "http://localhost/xxxx/input/post.json");
curl_easy_perform(easyhandle);
curl_easy_cleanup (easyhandle);
}
curl_global_cleanup();
return 0;
}
这就是我想要实现的目标:
http://localhost/xxxx/input/post.json?json={xxx:200}&apikey=xxxxx
它似乎不起作用。 :( 我是一个完全新手卷曲。请帮忙。
谢谢!
答案 0 :(得分:1)
幸运的是,我发送数据的服务器处理了POST和GET请求,因此有问题的代码就足够了。
具有类似问题的其他人可以使用简单的解决方法(如果您的代码没有实时约束并且不是性能密集型的)。您可以使用C中的system()来分叉bash进程。这可以避免编码的麻烦。
答案 1 :(得分:-1)
您尝试执行的操作不是执行POST请求,而是执行GET请求。但是,我不确定这是一个好主意,因为GET参数的长度有限(大约2 kB左右),而且 - 正如其他人已经提到的那样 - 它们需要进行编码和解码以及所有时髦的东西这是颈部疼痛。
指向localhost的URL表明您可以控制服务器代码。如果您使用POST参数而不是GET参数,则可以按原样使用当前代码(它设置请求的POST主体,这可能是正确的 - 所以您不必更改客户端代码,您只需要更改服务器代码。)