在C語言后端開發(fā)中,我們經(jīng)常需要使用POST方法來接收J(rèn)SON數(shù)據(jù)。下面是一個簡單的實現(xiàn)過程:
#include#include #include #include #define MAX_JSON_SIZE 10000 static int write_callback(char* ptr, size_t size, size_t nmemb, void* userdata) { // 將接收到的JSON數(shù)據(jù)保存到內(nèi)存中 strncpy(userdata, ptr, size*nmemb); return size * nmemb; } int main(int argc, char* argv[]) { CURL* curl; CURLcode res; char* url = "http://localhost:5000/json_api"; // 接收J(rèn)SON數(shù)據(jù)的API地址 char* json_data = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; // 發(fā)送的JSON數(shù)據(jù) char* recv_data = (char*)malloc(sizeof(char)*MAX_JSON_SIZE); // 保存接收到的JSON數(shù)據(jù)的內(nèi)存 curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, recv_data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); res = curl_easy_perform(curl); // 發(fā)送JSON數(shù)據(jù)并接收返回的JSON數(shù)據(jù) if (res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); else printf("recv data: %s\n", recv_data); // 輸出接收到的JSON數(shù)據(jù) curl_easy_cleanup(curl); } free(recv_data); curl_global_cleanup(); return 0; }
代碼中使用了curl庫,先全局初始化后創(chuàng)建一個curl對象。然后設(shè)置請求參數(shù),包括請求方法、請求地址、發(fā)送的JSON數(shù)據(jù)等等。最后發(fā)送請求并接收返回的JSON數(shù)據(jù)。
以上就是在C語言后端開發(fā)中使用POST方法接收J(rèn)SON數(shù)據(jù)的實現(xiàn)過程。希望對你有所幫助。