C语言curl get请求
时间: 2024-10-30 10:06:44 浏览: 7
在C语言中,使用libcurl库来进行GET请求是一种常见的网络通信操作。libcurl是一个强大的开源工具库,支持多种协议,包括HTTP、HTTPS等。下面是一个简单的示例,展示如何使用CURL发送GET请求:
```c
#include <curl/curl.h>
// 初始化CURL会话
CURL *curl;
CURLcode res;
// 创建一个CURL handle
curl = curl_easy_init();
if(curl) {
// 设置URL
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/api/resource"); // 替换为你需要的URL
// 发起GET请求
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
// 运行请求并捕获结果
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();
相关问题
C语言 用curl进行Get请求和post请求
使用C语言进行Get请求和Post请求可以使用curl库。下面是一个简单的示例代码:
进行Get请求:
```c
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
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);
}
return 0;
}
```
进行Post请求:
```c
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
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;
}
```
这两个示例代码都使用了curl_easy_setopt()函数设置请求的URL和参数,然后使用curl_easy_perform()函数执行请求。对于Post请求,还需要使用CURLOPT_POSTFIELDS选项设置请求的参数。注意,在使用curl库时,需要包含curl/curl.h头文件,并链接curl库。
linux C语言发送get请求,并将回复存入字符串中
好的,您可以使用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。
阅读全文