当前位置:网站首页>用curl库压缩成发送字符串为utf8并用curl库发送
用curl库压缩成发送字符串为utf8并用curl库发送
2022-04-23 11:15:00 【还债大湿兄】
#include <curl/curl.h>
int my_curl_init(void)
{
curl_global_init(CURL_GLOBAL_ALL);
return 1;
}
void my_curl_end(void)
{
curl_global_cleanup();
return;
}
int my_curl_post_parse(void* buffer, size_t size, size_t nmemb, char * useless)
{
memcpy(useless+strlen(useless), (char *)buffer, size*nmemb);
//if (1 == tunable_nd_debug_http_reponsed)
// printf("-------%s\n", useless);
return size*nmemb;
}
int my_curl_post_get(char *send_data, const char *url)
{
(void) nWriteLog;
if (!send_data)
return 0;
CURLcode res;
CURL *curl;
int iRet = 1;
char szBuf[2048];
struct curl_slist *chunk =0;
curl = curl_easy_init();
if (!curl)
return 0;
char* send_data_urlencode = curl_easy_escape(curl, send_data, strlen(send_data));
if (!send_data_urlencode)
{
curl_free(send_data_urlencode);
curl_easy_cleanup(curl);
return 0;
}
int nTotalLen = strlen(send_data_urlencode);
int nOffset = 0;
if (nTotalLen < 1)
{
curl_easy_cleanup(curl);
return 0;
}
for (int i = 0; i < nTotalLen; i++)
{
char v = send_data_urlencode[i];
switch (v)
{
case '%':
if ((i + 2) < nTotalLen)
{
if ('3' == send_data_urlencode[i + 1])
{
if ('D' == send_data_urlencode[i + 2])
{
send_data_urlencode[nOffset] = '=';
i += 2;
nOffset++;
continue;
}
}
else if ('2' == send_data_urlencode[i + 1])
{
if ('6' == send_data_urlencode[i + 2])
{
send_data_urlencode[nOffset] = '&';
i += 2;
nOffset++;
continue;
}
}
}
break;
default:
break;
}
send_data_urlencode[nOffset] = v;
nOffset++;
}
send_data_urlencode[nOffset] = 0;
chunk = curl_slist_append(chunk, "Content-Type: application/x-www-form-urlencoded");
sprintf(szBuf, "Content-Length: %ld", strlen(send_data_urlencode));
chunk = curl_slist_append(chunk, szBuf);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, send_data_urlencode);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_curl_post_parse);
memset(szBuf, 0, sizeof(szBuf));
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&szBuf);
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5L);
long httpcode = 0;
res = curl_easy_perform(curl);
if (res == CURLE_OK)
{
if (CURLE_OK == curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpcode))
{
plog("httpcode=%ld", httpcode);
}
}
int nSuccess = 0;
if (strstr(szBuf, "\"Code\":13000"))
{
nSuccess=1;
}
if (200 == httpcode)
{
iRet = 1;
if ( 0 == nSuccess)
{
}
}
else
{
iRet = -1;
}
curl_free(send_data_urlencode);
curl_easy_cleanup(curl);
return iRet;
}
调用的代码如下:
my_curl_init();
int nRet = my_curl_post_get( SendDataBuf, tunable_nd_log_url);
my_curl_end();
版权声明
本文为[还债大湿兄]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_30377315/article/details/121376580
边栏推荐
- Microsoft Access database using PHP PDO ODBC sample
- 小程序 支付
- Mba-day5 Mathematics - application problems - engineering problems
- Visualization Road (11) detailed explanation of Matplotlib color
- Go interface usage
- Cumcm 2021 - B: préparation d'oléfines C4 par couplage éthanol (2)
- 年度最尴尬的社死瞬间,是Siri给的
- MIT:用无监督为世界上每个像素都打上标签!人类:再也不用为1小时视频花800个小时了
- Oracle connectivity test gadget
- MySQL partition table can be classified by month
猜你喜欢
Typora operation skill description (I) md
About the three commonly used auxiliary classes of JUC
初探 Lambda Powertools TypeScript
STM32接电机驱动,杜邦线供电,然后反烧问题
Google Earth engine (GEE) - scale up the original image (taking Hainan as an example)
《Neo4j权威指南》简介,求伯君、周鸿袆、胡晓峰、周涛等大咖隆重推荐
分享两个实用的shell脚本
Microsoft Access database using PHP PDO ODBC sample
Promise详解
Visualization Road (10) detailed explanation of segmentation canvas function
随机推荐
Typora operation skill description (I) md
After the MySQL router is reinstalled, it reconnects to the cluster for boot - a problem that has been configured in this host before
赛微微电科创板上市破发:跌幅达26% 公司市值44亿
Learn go language 0x04: Code of exercises sliced in go language journey
STM32接电机驱动,杜邦线供电,然后反烧问题
mysql分表之后如何平滑上线详解
ffmpeg命令行常用参数
一道有趣的阿里面试题
学习 Go 语言 0x07:《Go 语言之旅》中 Stringer 练习题代码
Promise details
Learn go language 0x06: Fibonacci closure exercise code in go language journey
MySQL partition table can be classified by month
PDMS soft lithography process
Detailed explanation of MySQL creation stored procedure and function
More reliable model art than deep learning
Google Earth Engine(GEE)——将原始影像进行升尺度计算(以海南市为例)
VM set up static virtual machine
Mysql排序的特性详情
How to use JDBC callablestatement The wasnull () method is called to check whether the value of the last out parameter is SQL null
Excel·VBA数组冒泡排序函数