C語(yǔ)言中使用json格式傳遞參數(shù)是常見(jiàn)的一種方式,今天我們來(lái)談一談如何在C語(yǔ)言的GET請(qǐng)求中傳遞參數(shù)。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <curl/curl.h> #include <jansson.h> #define URL "http://example.com/get" #define QUERY_KEY "key" int main() { CURL *curl; CURLcode res; char *query; char url[256]; // 生成json格式的參數(shù) json_t *params = json_object(); json_object_set_new(params, "name", json_string("John")); json_object_set_new(params, "age", json_integer(25)); query = strdup(json_dumps(params, JSON_COMPACT)); // 構(gòu)造GET請(qǐng)求URL sprintf(url, "%s?%s=%s", URL, QUERY_KEY, query); // 初始化curl curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { // 設(shè)置curl選項(xiàng) curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); // 執(zhí)行curl請(qǐng)求 res = curl_easy_perform(curl); // 檢查curl執(zhí)行是否成功 if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } // 撤銷curl會(huì)話 curl_easy_cleanup(curl); } // 釋放內(nèi)存 free(query); json_decref(params); curl_global_cleanup(); return 0; }
代碼分為三部分:
- 生成json格式的參數(shù)。
- 構(gòu)造GET請(qǐng)求的URL。
- 使用curl庫(kù)執(zhí)行GET請(qǐng)求,并使用生成的URL發(fā)送請(qǐng)求。
首先,我們使用jansson庫(kù)生成一個(gè)json_t對(duì)象,然后使用json_object_set_new()函數(shù)向?qū)ο笾刑砑觾蓚€(gè)屬性:name和age。最后,我們使用json_dumps()函數(shù)將json_t對(duì)象轉(zhuǎn)換為字符串。
接下來(lái),我們使用sprintf()函數(shù)構(gòu)造GET請(qǐng)求的URL。URL包括兩部分:URL本身和查詢字符串。查詢字符串中,key的值是我們剛才生成的json格式的參數(shù)。
最后,我們使用curl庫(kù)執(zhí)行GET請(qǐng)求。首先,我們使用curl_easy_setopt()函數(shù)設(shè)置curl選項(xiàng),包括URL和是否在服務(wù)器重定向時(shí)自動(dòng)跳轉(zhuǎn)。然后,我們使用curl_easy_perform()函數(shù)執(zhí)行curl請(qǐng)求。
在curl執(zhí)行完畢后,我們需要使用curl_easy_cleanup()函數(shù)撤銷curl會(huì)話并釋放內(nèi)存。
上一篇vue async使用
下一篇python 打印金字塔