POST是一種常用的HTTP請(qǐng)求方法,可以向Web服務(wù)器提交數(shù)據(jù)。如果提交的數(shù)據(jù)是JSON格式,需要按照特定的格式進(jìn)行處理。
首先,需要設(shè)置HTTP頭部的Content-Type屬性為application/json,以告訴服務(wù)器提交的是JSON數(shù)據(jù)。其次,需要將JSON數(shù)據(jù)作為請(qǐng)求體的內(nèi)容發(fā)送。
#include <stdio.h> #include <curl/curl.h> int main(int argc, char **argv) { CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/api"); curl_easy_setopt(curl, CURLOPT_POST, 1); 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); } curl_global_cleanup(); return 0; }
上述代碼使用libcurl庫(kù)實(shí)現(xiàn)了向http://www.example.com/api提交JSON數(shù)據(jù)的POST請(qǐng)求。其中,curl_easy_setopt函數(shù)設(shè)置了三個(gè)選項(xiàng):
- CURLOPT_URL:請(qǐng)求的URL地址
- CURLOPT_POST:設(shè)置為1表示使用POST方法
- CURLOPT_POSTFIELDS:請(qǐng)求體內(nèi)容,即JSON格式的數(shù)據(jù)
- CURLOPT_HTTPHEADER:HTTP頭部設(shè)置,指定Content-Type為application/json
使用以上設(shè)置,發(fā)送POST請(qǐng)求后,服務(wù)器可以正確處理JSON格式的數(shù)據(jù)。