当前位置:网站首页>Compress the curl library into a sending string of utf8 and send it with curl library
Compress the curl library into a sending string of utf8 and send it with curl library
2022-04-23 11:19:00 【Brother dampness】
#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;
}
The code called is as follows :
my_curl_init();
int nRet = my_curl_post_get( SendDataBuf, tunable_nd_log_url);
my_curl_end();
版权声明
本文为[Brother dampness]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231115090984.html
边栏推荐
猜你喜欢

Learn go language 0x04: Code of exercises sliced in go language journey

解读机器人创造出来的艺术

Using Baidu PaddlePaddle EasyDL to accomplish specified target recognition

Summary of the relationship among GPU, CUDA and cudnn

初探 Lambda Powertools TypeScript

C#的学习笔记【八】SQL【一】

More reliable model art than deep learning

After the MySQL router is reinstalled, it reconnects to the cluster for boot - a problem that has been configured in this host before

Résumé de la relation entre GPU, cuda et cudnn

Excel·VBA数组冒泡排序函数
随机推荐
Implementation of partition table of existing data table by MySQL
MySQL面试题讲解之如何设置Hash索引
Usage of rename in cygwin
PlatoFarm推出正式版游戏经济模型的特点分析
Implementation of inserting millions of data into MySQL database in 10 seconds
MySQL Router重装后重新连接集群进行引导出现的——此主机中之前已配置过的问题
解读机器人编程课程的生物认知度
谁说抠图要会 PS?这个开源神器还能批量抠,效果拔群!
面向全球市场,PlatoFarm今日登录HUOBI等全球四大平台
Get things technology network optimization - CDN resource request Optimization Practice
web三大组件(Servlet,Filter,Listener)
Structure of C language (Advanced)
CUMCM 2021-b: preparation of C4 olefins by ethanol coupling (2)
More reliable model art than deep learning
MySQL failed to insert the datetime type field without single quotation marks
实践数据湖iceberg 第三十课 mysql->iceberg,不同客户端有时区问题
学习 Go 语言 0x06:《Go 语言之旅》中 斐波纳契闭包 练习题代码
GPU, CUDA,cuDNN三者的关系总结
Mba-day6 logic - hypothetical reasoning exercises
Using Baidu PaddlePaddle EasyDL to accomplish specified target recognition