linux C语言发送get请求,并将回复存入字符串中
时间: 2024-04-03 18:34:53 浏览: 58
Linux下用c语言实现发送http请求
4星 · 用户满意度95%
好的,您可以使用libcurl库来发送HTTP请求并将响应存储在字符串中。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <curl/curl.h>
int main() {
CURL *curl;
CURLcode res;
char *url = "http://www.example.com";
char *response = 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, &response);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
} else {
printf("Response: %s\n", response);
}
curl_easy_cleanup(curl);
}
return 0;
}
size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
size_t realsize = size * nmemb;
char **response_ptr = (char **)userdata;
*response_ptr = realloc(*response_ptr, strlen(*response_ptr) + realsize + 1);
if (*response_ptr == NULL) {
printf("realloc() failed\n");
return 0;
}
strncat(*response_ptr, ptr, realsize);
return realsize;
}
```
这个程序使用curl_easy_init()函数初始化一个CURL句柄,然后设置一些选项来指定要发送的请求以及如何处理响应。curl_easy_perform()函数执行请求并阻塞,直到收到响应。响应数据存储在response指针指向的字符串中,并在成功时打印到控制台上。
注意,我们还定义了一个回调函数write_callback()来处理响应数据的存储。该函数被curl库调用,每次收到一部分响应数据时都会被调用。在这个函数中,我们使用realloc()函数将响应字符串扩展到足够的大小来存储新数据,并将新数据追加到字符串的末尾。
另外,您需要使用以下命令编译程序:
```
gcc -o example example.c -lcurl
```
这将链接libcurl库并生成可执行文件example。
阅读全文