當我們需要將多個JSON對象封裝為一個數組進行POST請求時,就需要用到C語言的POST請求處理方法。
//需要發送的JSON對象數組 char *car_list[2] = { "{ \"brand\": \"Tesla\", \"model\": \"Model S\", \"year\": 2022 }", "{ \"brand\": \"Audi\", \"model\": \"A4\", \"year\": 2021 }" }; //計算并設置JSON對象數組的大小 int content_length = strlen(car_list[0]) + strlen(car_list[1]) + 4; char content_length_str[16]; sprintf(content_length_str, "%d", content_length); //創建POST請求對象 CURL *curl = curl_easy_init(); if (curl) { //設置POST請求URL curl_easy_setopt(curl, CURLOPT_URL, "http://api.example.com/cars"); //設置請求參數 curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, car_list); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, content_length); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); //執行POST請求 CURLcode res = curl_easy_perform(curl); //釋放資源 curl_easy_cleanup(curl); }
上述代碼中,我們首先定義了一個JSON對象數組,包括兩個對象,每個對象有三個屬性,分別是brand,model和year。接著,我們計算并設置了JSON對象數組的大小,并創建了一個POST請求對象。
在設置請求參數時,我們先設置了POST請求的URL,然后設置了請求類型為POST,設置了請求參數為JSON對象數組,指定了JSON對象數組的大小,設置了請求頭信息,包括請求的User-Agent等,并設置了VERBOSE選項用于調試和查看請求詳情。
最后,我們執行了POST請求,獲取返回結果。當然,在執行完請求之后,我們需要及時釋放資源(釋放CURL對象,關閉curl_easy_init()等)。