代码拉取完成,页面将自动刷新
#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;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。