当前位置:网站首页>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
边栏推荐
- 26. Delete duplicates in ordered array
- vm设置静态虚拟机
- 解决 『SunCertPathBuilderException:unable to find valid certification path to requested target』 问题
- nacos基础(6):nacos配置管理模型
- 学习 Go 语言 0x05:《Go 语言之旅》中映射(map)的练习题代码
- 少儿编程结构的改变之路
- Prevent SQL injection in web projects
- 学习 Go 语言 0x08:《Go 语言之旅》中 练习使用 error
- The songbird document editor will be open source: starting with but not limited to markdown
- CUMCM 2021-b: preparation of C4 olefins by ethanol coupling (2)
猜你喜欢
随机推荐
MySQL sorting feature details
Upgrade the functions available for cpolar intranet penetration
Go interface usage
Learning website materials
Which company is good for opening futures accounts? Who can recommend several safe and reliable futures companies?
Explain in detail the pitfalls encountered in DTS due to the time zone problems of timestamp and datetime in MySQL
Mba-day6 logic - hypothetical reasoning exercises
微型机器人的认知和研发技术
nacos基础(7):配置管理
laravel-admin时间范围选择器dateRange默认值问题
Understanding of fileprovider path configuration strategy
Usage of rename in cygwin
Usage Summary of datetime and timestamp in MySQL
CUMCM 2021-b: preparation of C4 olefins by ethanol coupling (2)
初探 Lambda Powertools TypeScript
数据库管理软件SQLPro for SQLite for Mac 2022.30
Learn go language 0x05: the exercise code of map in go language journey
Solve the problem of "suncertpathbuilderexception: unable to find valid certification path to requested target"
Jupyter Lab 十大高生产力插件
Oracle连通性测试小工具









