C語言中,通過http協議傳輸json格式的數據是很常見的場景。http+json實現數據傳輸的方式具有易用、高效等優點,本篇文章將介紹如何通過c語言中的http+json實現數據傳輸。
#include#include #include #include #include #define POST_URL "http://example.com/api/post" #define GET_URL "http://example.com/api/get" //發送POST請求 void send_post_request() { CURL *curl = curl_easy_init(); if(curl) { //設置請求的URL地址 curl_easy_setopt(curl, CURLOPT_URL, POST_URL); //設置請求的Content-Type struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); //設置請求數據 json_object *jobj = json_object_new_object(); json_object *jstring = json_object_new_string("test"); json_object_object_add(jobj, "key1", jstring); char *post_data = json_object_to_json_string(jobj); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data); //發起POST請求 CURLcode res = curl_easy_perform(curl); if(res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } //釋放資源 curl_easy_cleanup(curl); json_object_put(jobj); } } //發送GET請求 void send_get_request() { CURL *curl = curl_easy_init(); if(curl) { //設置請求的URL地址 curl_easy_setopt(curl, CURLOPT_URL, GET_URL); //發起GET請求 CURLcode res = curl_easy_perform(curl); if(res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } //釋放資源 curl_easy_cleanup(curl); } } int main() { send_post_request(); send_get_request(); return 0; }
以上代碼示例展示了常見的使用c語言中的curl庫和json-c庫發送http請求,并將json格式的數據傳輸到服務器的方法。具體來說,使用curl的curl_easy_setopt函數設置請求的URL地址、請求方式、請求頭、請求數據等信息,通過json-c庫將數據轉換成json格式再發送請求。