C語言中使用curl傳輸json數據是一項非常基礎和重要的技能,下面我們來介紹一下它的基本步驟。
第一步,我們需要引入curl庫的頭文件:
#include <curl/curl.h>
第二步,我們需要配置一個curl請求的參數結構體:
typedef struct { const char *data; size_t length; } POST_DATA; static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) { POST_DATA *post = (POST_DATA *)userp; if(size * nmemb< 1) { return 0; } if(post->length) { *(char **)ptr = (char *)post->data; size_t len = post->length; post->length = 0; return len; } return 0; }
第三步,我們需要使用curl_easy_setopt方法來配置curl請求的各種參數:
CURL *curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/api"); curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, post_data.length); curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, post_data.data); curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); curl_easy_setopt(curl, CURLOPT_READDATA, &post_data); curl_easy_perform(curl); curl_easy_cleanup(curl); }
第四步,我們需要將json數據轉換成post_data結構體,方便傳到curl請求中:
POST_DATA post_data = { .data = "{\"name\":\"張三\", \"age\":18}", .length = strlen("{\"name\":\"張三\", \"age\":18}") };
最后,我們就可以使用curl進行json數據的傳輸了,具體的響應數據處理方法就不在本文中介紹了。