在C語言中,我們需要通過網絡將JSON數據傳輸到其他設備或服務器。一種常見的方法是將JSON數據作為HTTP請求的正文體來傳輸。以下是一個使用libcurl庫將JSON數據作為HTTP POST請求發送的示例代碼:
#include#include int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\":\"John\",\"age\":30}"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, "Content-Type: application/json"); 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); } return 0; }
這個例子中,我們設置了POST請求的URL和JSON數據正文體。我們還設置了HTTP頭的Content-Type字段為application/json,這是告訴服務器我們發送的正文體是JSON數據。最后,我們使用curl_easy_perform()函數執行請求。
如果你需要接收JSON數據,你需要創建一個HTTP服務器來接收請求,并解析請求消息的正文體。在C語言中,一個常見的HTTP服務器是libmicrohttpd庫。以下是一個使用libmicrohttpd庫創建HTTP服務器,接收JSON數據的示例代碼:
#include#include #include int answer_to_connection (void *cls, struct MHD_Connection *connection, const char *url, const char *method, const char *version, const char *upload_data, size_t *upload_data_size, void **con_cls) { if (0 == strcmp (method, "POST")) { struct MHD_Response *response; int ret; response = MHD_create_response_from_buffer (strlen ("{\"success\":true}"), (void*) "{\"success\":true}", MHD_RESPMEM_PERSISTENT); ret = MHD_queue_response (connection, MHD_HTTP_OK, response); MHD_destroy_response (response); return ret; } else { return MHD_NO; } } int main () { struct MHD_Daemon *daemon; daemon = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY, 8080, NULL, NULL, &answer_to_connection, NULL, MHD_OPTION_END); if (NULL == daemon) return 1; getchar (); MHD_stop_daemon (daemon); return 0; }
在這個例子中,我們創建了一個監聽8080端口的HTTP服務器,并在answer_to_connection()函數中接收POST請求。我們從正文體中解析JSON數據,然后執行所需的操作。在本例中,我們僅僅返回了一個內容為{"success":true}的JSON響應。在實際應用中,你需要根據自己的需求返回不同的JSON響應。
上一篇python 矩陣圖形
下一篇python 矩陣倒序