#include "curlget.h" // 初始化响应数据结构体 void init_response(ResponseData *data) { data->buffer = malloc(1); // 初始分配1字节(空字符串) data->size = 0; // 初始长度为0 } // 回调函数:将响应数据追加到字符串缓冲区 size_t write_to_string(void *ptr, size_t size, size_t nmemb, void *userdata) { ResponseData *data = (ResponseData *)userdata; size_t new_size = data->size + size * nmemb; // 计算新的总长度 // 动态扩容缓冲区(+1 预留空字符位置) data->buffer = realloc(data->buffer, new_size + 1); if (!data->buffer) { fprintf(stderr, "内存分配失败\n"); return 0; // 分配失败,返回0表示未处理数据 } // 将新数据复制到缓冲区末尾 memcpy(data->buffer + data->size, ptr, size * nmemb); data->size = new_size; data->buffer[new_size] = '\0'; // 确保字符串以空字符结尾 return size * nmemb; // 返回实际处理的数据长度 } int getParam(char *url,ResponseData *response) { CURL *curl; CURLcode res; // 初始化响应缓冲区 init_response(response); // 初始化libcurl curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl) { // 设置请求URL curl_easy_setopt(curl, CURLOPT_URL, url); // 配置回调函数:将响应写入response结构体 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_to_string); curl_easy_setopt(curl, CURLOPT_WRITEDATA, response); // 执行请求 res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "请求失败: %s\n", curl_easy_strerror(res)); } else { // 打印响应字符串(请求成功后) } // 清理curl句柄 curl_easy_cleanup(curl); } // 释放响应缓冲区 //free(response->buffer); // 清理libcurl全局资源 curl_global_cleanup(); return 0; }