最近需要在C語言中通過微信發送POST請求,傳輸JSON數據時遇到了一些問題。在這里和大家分享一下我的心得。
首先需要使用curl庫來進行HTTP請求。接下來我們需要設置請求頭的Content-Type為application/json,這樣才能正確的發送JSON數據。
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(json_data));
其中,headers是一個包含Content-Type的指針數組,json_data是包含JSON數據的char數組,需要使用strlen計算長度。
完整的代碼如下:
CURL *curl; CURLcode res; struct curl_slist *headers = NULL; char *json_data = "{\"key\":\"value\"}"; curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl) { headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_URL, "https://api.weixin.qq.com/user/info"); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(json_data)); res = curl_easy_perform(curl); if (res != CURLE_OK) printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl); } curl_global_cleanup();
通過這段代碼,我們就可以在C語言中發送JSON數據到微信API了。
上一篇python 矩陣取對數
下一篇c 怎么創建數組json