2 Star 1 Fork 1

刘煜/smartspeaker

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
http.c 2.29 KB
一键复制 编辑 原始数据 按行查看 历史
刘煜 提交于 2024-05-18 17:22 +08:00 . 将HTTP协议处理放到单独的文件中
#include <stdio.h>
#include "http.h"
// psize 响应正文大小,输出参数
char* get(char* url, struct curl_slist* headers, size_t* psize)
{
char *respdata;
size_t respsize;
FILE *fp = open_memstream(&respdata, &respsize);
if (!fp)
{
perror("open_memstream");
return NULL;
}
CURL *client = curl_easy_init();
if (!client)
{
perror("curl_easy_init");
fclose(fp);
return NULL;
}
curl_easy_setopt(client, CURLOPT_URL, url);
if (headers)
{
curl_easy_setopt(client, CURLOPT_HTTPHEADER, headers);
}
// 将服务器返回的响应报文保存到文件流中
curl_easy_setopt(client, CURLOPT_WRITEDATA, fp);
CURLcode error = curl_easy_perform(client);
if (error != CURLE_OK)
{
fprintf(stderr, "curl_easy_perform: %s\n", curl_easy_strerror(error));
curl_easy_cleanup(client);
fclose(fp);
return NULL;
}
curl_easy_cleanup(client);
fclose(fp);
//更新响应正文大小
*psize = respsize;
return respdata;
}
// psize 请求和响应正文大小,输入和输出参数
char* post(char* url, struct curl_slist* headers, char* data, size_t* psize)
{
char *respdata;
size_t respsize;
FILE *fp = open_memstream(&respdata, &respsize);
if (!fp)
{
perror("open_memstream");
return NULL;
}
CURL *client = curl_easy_init();
if (!client)
{
perror("curl_easy_init");
fclose(fp);
return NULL;
}
curl_easy_setopt(client, CURLOPT_URL, url);
curl_easy_setopt(client, CURLOPT_POST, 1);
curl_easy_setopt(client, CURLOPT_POSTFIELDS, data);
curl_easy_setopt(client, CURLOPT_POSTFIELDSIZE, *psize);
if (headers)
{
curl_easy_setopt(client, CURLOPT_HTTPHEADER, headers);
}
// 将服务器返回的响应报文保存到文件流中
curl_easy_setopt(client, CURLOPT_WRITEDATA, fp);
CURLcode error = curl_easy_perform(client);
if (error != CURLE_OK)
{
fprintf(stderr, "curl_easy_perform: %s\n", curl_easy_strerror(error));
curl_easy_cleanup(client);
fclose(fp);
return NULL;
}
curl_easy_cleanup(client);
fclose(fp);
//更新响应正文大小
*psize = respsize;
return respdata;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/tinytaro/smartspeaker.git
git@gitee.com:tinytaro/smartspeaker.git
tinytaro
smartspeaker
smartspeaker
main

搜索帮助