C语言 http get
时间: 2024-08-13 09:07:43 浏览: 48
c语言实现http get post 请求 适用于arm x86 嵌入式系统
在C语言中,实现HTTP GET请求通常涉及到使用系统调用或者第三方库,如libcurl或WinHttpAPI(Windows平台)。由于C语言本身没有内置的网络请求库,以下是使用libcurl库的一个简单示例:
```c
#include <curl/curl.h>
// 初始化libcurl
void init_curl() {
curl_global_init(CURL_GLOBAL_DEFAULT);
}
// 发送GET请求
size_t write_function(void *ptr, size_t size, size_t nmemb, void *userp) {
// 这里假设ptr指向的是接收到的响应数据
((char*)userp)->append(ptr, size * nmemb);
return size * nmemb;
}
size_t read_callback(char *data, size_t size, size_t nmemb, void *userp) {
// 在这里处理接收的数据
return size * nmemb;
}
void perform_get_request(const char *url, char *response_buffer, size_t buffer_size) {
CURL *curl;
CURLcode res;
// 初始化CURL会话
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_function);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, response_buffer);
// 如果需要设置其他选项,例如超时时间,添加自定义头等,可以在这里添加
// ...
// 执行请求
res = curl_easy_perform(curl);
// 处理结果,可能的错误代码见CURL_easy_strerror(res)
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
// 清理
curl_easy_cleanup(curl);
}
}
int main() {
init_curl();
char response[1024];
perform_get_request("http://example.com", response, sizeof(response));
// 在这里处理返回的response数据
return 0;
}
```
阅读全文