C 調用 POST 請求傳 JSON 是一種常見的網絡編程需求。本文將向您介紹如何使用 C 語言編寫一個 POST 請求,并將 JSON 數據作為請求體發送。
#include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"name\":\"John Doe\",\"age\":30}"); /* 設置請求頭 */ struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Accept: application/json"); headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); res = curl_easy_perform(curl); /* 釋放請求頭資源 */ curl_slist_free_all(headers); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }
在上述示例代碼中,我們使用 libcurl 庫發送 POST 請求。這里我們需要調用 curl_easy_setopt 函數來設置請求的一些選項。其中,CURLOPT_URL 表示請求的地址,CURLOPT_POSTFIELDS 表示請求體中要發送的數據。
在這里我們使用的請求頭中 Accept 表示希望服務端響應的數據類型為 JSON;Content-Type 表示請求體中要發送的數據為 JSON。
注意,上述代碼的斷言情境假定接收 JSON 的服務器至少返回了 HTTP 400 響應(即“Bad Request”,請求錯誤)以捕獲客戶端提供的無效 JSON。