色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 發送post返回json

錢諍諍1年前7瀏覽0評論

在C語言中,發送POST請求并獲取JSON響應是一種基本操作。這種操作經常被用在Web開發過程中,因為很多Web服務API都需要POST請求,而且響應也經常以JSON格式返回。那么,我們該如何實現這個操作呢?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
// 用于處理響應結果的回調函數
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
size_t realsize = size * nmemb;
char *resp = (char *)userdata;
memcpy(resp, ptr, realsize);
return realsize;
}
int main() {
CURL *curl;
CURLcode res;
char *resp;
long resp_code;
char *postdata = "foo=bar&baz=qux";
char *url = "http://example.com/api";
// 初始化curl
curl = curl_easy_init();
if (!curl) {
fprintf(stderr, "curl_easy_init() failed\n");
return 1;
}
// 設置請求頭
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
// 設置請求選項
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
// 設置響應處理函數
resp = (char *)malloc(1024 * sizeof(char));
memset(resp, 0, 1024 * sizeof(char));
curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
// 發送請求
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);
free(resp);
return 1;
}
// 獲取響應碼
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp_code);
printf("Response code: %ld\n", resp_code);
// 打印響應結果
printf("Response body:\n%s\n", resp);
// 清理curl
curl_easy_cleanup(curl);
free(resp);
return 0;
}

上述代碼演示了如何發送POST請求,并獲取服務端以JSON格式返回的響應。需要注意的是,這里使用了CURL庫來發送HTTP請求并處理響應結果。通過設置請求選項,我們可以很方便地指定請求URL、請求方法、請求頭、請求參數等信息。同時,通過設置寫入回調函數,我們可以很方便地獲取服務器返回的響應數據。