欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 請求url json數據格式化

呂致盈1年前7瀏覽0評論

在web開發中,我們常常需要向服務器發送HTTP請求,并處理服務器返回的數據。而請求和返回的數據格式往往是JSON格式。在C語言中,可以使用cURL庫來發送HTTP請求,并使用json-c庫來處理JSON格式的數據。

首先,我們需要在程序中引入cURL和json-c庫:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <json/json.h>

接著,我們可以編寫請求函數,用于向服務器發送HTTP請求。下面的代碼是一個使用GET方法請求URL的函數:

char *http_get(const char *url) {
CURL *curl;
CURLcode res;
char *buf = NULL;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buf);
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);
}
return buf;
}

這個函數使用了cURL庫中的curl_easy_init()初始化和curl_easy_cleanup()清理函數,curl_easy_setopt()設置請求選項,并使用了回調函數write_callback()來處理服務器返回的數據。在write_callback()函數中,我們使用了json-c庫中的json_object_from_string()函數來將服務器返回的JSON數據字符串解析為JSON對象。

size_t write_callback(char *ptr, size_t size, size_t nmemb, char **buf) {
size_t buf_len = size * nmemb;
*buf = realloc(*buf, buf_len + 1);
if(*buf == NULL) {
fprintf(stderr, "realloc() failed\n");
return 0;
}
strncat(*buf, ptr, buf_len);
return buf_len;
}
json_object *parse_json(const char *json_str) {
json_object *jobj = json_object_from_string(json_str);
if(jobj == NULL) {
fprintf(stderr, "json_object_from_string() failed\n");
return NULL;
}
return jobj;
}

最后,我們可以使用parse_json()函數來將服務器返回的JSON數據字符串解析為JSON對象,并使用json-c庫中的相關函數來處理JSON對象中的數據。

在C語言中,使用cURL和json-c庫處理HTTP請求和JSON數據十分方便。通過編寫一些簡單的函數,我們就可以輕松地發送HTTP請求,并處理服務器返回的JSON數據。