使用curl和json-c从C调用json webservice

我需要调用一个接受json对象的restful webservice。 我能够找到像libcurl这样的库来从C应用程序调用web服务。 我还能够找到像json-c这样的库来在C中创建一个json对象。

libcurl接受一个字符串并将其发布到给定的webservice url。 无论如何,我可以发布使用json-c库创建的json对象,并使用curl库调用webservice。

如果有任何其他库允许我同时创建一个json对象并调用webservice或任何其他替代解决方案,请告诉我。

感谢您的帮助。

以下是使用两个库的示例:

#include  #include  #include  int main(int argc, char **argv) { /* LIB JSON-C PART */ /* Create a JSON object */ json_object * jObj = json_object_new_object(); /* Create a string element */ json_object *jString = json_object_new_string("Guybrush"); /* Include the element to the JSON final object */ json_object_object_add(jObj,"name", jString); /* LIB CURL PART */ /* Initialize CURL */ CURL *curlHandler = curl_easy_init(); if(curlHandler) { /* Set CURL parameters */ curl_easy_setopt(curlHandler, CURLOPT_URL, "http://api.yoururl.com"); curl_easy_setopt(curlHandler, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(curlHandler, CURLOPT_POSTFIELDS, json_object_to_json_string(jObj)); /* Perform the request */ CURLcode res = curl_easy_perform(curlHandler); /* Check for errors */ if(res != CURLE_OK) fprintf(stderr, "CURL failed: %s\n", curl_easy_strerror(res)); /* Clean up */ curl_easy_cleanup(curlHandler); json_object_object_del(jObj, "name"); free(jObj); } return 0; } 

使用json-c中的以下函数将json对象转换为字符串,并将其包含在curl请求的正文中。

 #include "json.h" const char* json_object_to_json_string(struct json_object *obj); 

在这里查看HTTP POST的示例(您可能需要使用PUT或DELETE,具体取决于您要连接的Web服务以及您要执行的操作)