1 Star 0 Fork 0

wwwsh0510/博物馆讲解系统

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
http.c 2.58 KB
一键复制 编辑 原始数据 按行查看 历史
wwwsh0510 提交于 2024-07-05 16:03 . 引用火山引擎语音合成API
#include <stdio.h>
#include "http.h"
//发送GET请求
//url: 请求地址
//headers: 增加的请求头部字段
//psize: 响应正文大小,输出参数
//返回值: 响应正文,需要调用者释放内存
char* http_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;
}
//发送POST请求
//url: 请求地址
//headers: 增加的请求头部字段
//data: 请求正文
//psize: 请求和响应正文大小,输入和输出参数
//返回值: 响应正文,需要调用者释放内存
char* http_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;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wwwsh0510/museum-self-explanation-system.git
git@gitee.com:wwwsh0510/museum-self-explanation-system.git
wwwsh0510
museum-self-explanation-system
博物馆讲解系统
master

搜索帮助