当前位置:网站首页>用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
边栏推荐
- Usage of rename in cygwin
- Difference between pregnancy box and delivery box
- Google Earth engine (GEE) - scale up the original image (taking Hainan as an example)
- 详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
- PDMS软光刻加工过程
- ConstraintLayout布局
- Structure of C language (Advanced)
- 学习 Go 语言 0x03:理解变量之间的依赖以及初始化顺序
- Mysql系列SQL查询语句书写顺序及执行顺序详解
- Learning go language 0x01: start from the official website
猜你喜欢
The songbird document editor will be open source: starting with but not limited to markdown
Excel·VBA数组冒泡排序函数
第六站神京门户-------手机号码的转换
Jupyter lab top ten high productivity plug-ins
Visual common drawing (V) scatter diagram
数据库管理软件SQLPro for SQLite for Mac 2022.30
Cumcm 2021 - B: préparation d'oléfines C4 par couplage éthanol (2)
初探 Lambda Powertools TypeScript
Visualization Road (10) detailed explanation of segmentation canvas function
采用百度飞桨EasyDL完成指定目标识别
随机推荐
CUMCM 2021-B:乙醇偶合制備C4烯烴(2)
Alarm scene recognition
Prevent SQL injection in web projects
学习 Go 语言 0x07:《Go 语言之旅》中 Stringer 练习题代码
Usage of rename in cygwin
Microsoft Access database using PHP PDO ODBC sample
Code implementation of general bubbling, selection, insertion, hill and quick sorting
妊娠箱和分娩箱的区别
Which company is good for opening futures accounts? Who can recommend several safe and reliable futures companies?
Cygwin 中的 rename 用法
MySQL Router重装后重新连接集群进行引导出现的——此主机中之前已配置过的问题
More reliable model art than deep learning
比深度学习更值得信赖的模型ART
Use of SVN:
Learn go language 0x07: stringer exercise code in go language journey
Applet payment
Promise详解
MySQL数据库事务transaction示例讲解教程
Jupyter Lab 十大高生产力插件
Three web components (servlet, filter, listener)