在C语言中使用curl库来发送HTTP请求并解析JSON响应可以通过以下步骤实现:
#include <curl/curl.h>
curl_global_init(CURL_GLOBAL_DEFAULT);
CURL *curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api");
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
// 在这里处理接收到的响应数据
return size * nmemb;
}
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
CURLcode 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);
curl_global_cleanup();
以上是使用curl库发送HTTP请求的基本步骤。要解析JSON响应,你可以使用第三方的JSON解析库,例如Jansson(https://digip.org/jansson/)或cJSON(https://github.com/DaveGamble/cJSON)。
以下是一个完整的示例代码,演示如何使用curl库发送HTTP请求并解析JSON响应:
#include <stdio.h>
#include <curl/curl.h>
#include <jansson.h>
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
// 在这里处理接收到的响应数据
// 这里假设响应数据是一个JSON字符串
json_error_t error;
json_t *root = json_loads(ptr, 0, &error);
// 解析JSON数据
if (root) {
// 在这里处理解析后的JSON数据
// 例如,获取JSON对象的值
json_t *value = json_object_get(root, "key");
if (json_is_string(value)) {
const char *str_value = json_string_value(value);
printf("Value: %s\n", str_value);
}
// 释放JSON对象
json_decref(root);
} else {
fprintf(stderr, "JSON parsing error: %s\n", error.text);
}
return size * nmemb;
}
int main() {
curl_global_init(CURL_GLOBAL_DEFAULT);
CURL *curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
CURLcode 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);
}
curl_global_cleanup();
return 0;
}
请注意,这只是一个简单的示例代码,你可能需要根据你的实际需求进行适当的修改和扩展。另外,你还可以根据具体的业务需求选择适合的JSON解析库,并根据需要进行相应的错误处理和数据处理。
领取专属 10元无门槛券
手把手带您无忧上云