add log4cplus

This commit is contained in:
lnk
2025-05-09 16:53:07 +08:00
parent 92117de97e
commit 8a2e6ea537
109 changed files with 18240 additions and 4034 deletions

View File

@@ -17,7 +17,7 @@ using namespace std;
#include <stdlib.h>
#include <string>
#include "../mms/db_interface.h"
#include "../json/cjson.h"//WW 2023-08-27<EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include "../json/cjson.h"//WW 2023-08-27新增json解析函数
#include "../include/curl/curl.h"
#ifdef __cplusplus
@@ -31,33 +31,33 @@ size_t req_reply(void* ptr, size_t size, size_t nmemb, void* stream)
return size * nmemb;
}
/**
* @brief Get_Uuid <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>json,<EFBFBD>õ<EFBFBD>uuid
* @param ptr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param uuid <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
* @return int 0<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD> -1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĴ<EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
* @brief Get_Uuid 解析返回json,得到uuid
* @param ptr 需解码的数据
* @param uuid 需解码的数据大小
* @return int 0:成功 -1:无效参数
* 注意解码的数据的大小必须大于4且是4的倍数
*/
int Get_Uuid(const char* ptr, char* uuid,char* filename)
{
int result = 0;
cJSON* json = cJSON_Parse((char*)ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
cJSON* json = cJSON_Parse((char*)ptr); //json格式序列化
cJSON* json_code;
cJSON* json_data;
cJSON* json_msg;
if (json) {
json_code = cJSON_GetObjectItem(json, "code"); //<EFBFBD><EFBFBD>ȡsuccess
json_msg = cJSON_GetObjectItem(json, "msg"); //<EFBFBD><EFBFBD>ȡsuccess
json_data = cJSON_GetObjectItem(json, "data"); //<EFBFBD><EFBFBD>ȡdata
json_code = cJSON_GetObjectItem(json, "code"); //获取success
json_msg = cJSON_GetObjectItem(json, "msg"); //获取success
json_data = cJSON_GetObjectItem(json, "data"); //获取data
if (json_code && json_code->type == cJSON_Number && json_code->valueint==0) {
printf("upload uds success\n");
cJSON* json_uuid;
cJSON* json_filename;
json_uuid = cJSON_GetObjectItem(json_data, "storeId"); //<EFBFBD><EFBFBD>ȡdata
json_uuid = cJSON_GetObjectItem(json_data, "storeId"); //获取data
if (json_uuid && json_uuid->type == cJSON_String) {
strcpy(uuid, json_uuid->valuestring);
printf("read uds uuid success:%s\n", uuid);
}
json_filename = cJSON_GetObjectItem(json_data, "fileName"); //<EFBFBD><EFBFBD>ȡdata
json_filename = cJSON_GetObjectItem(json_data, "fileName"); //获取data
if (json_filename && json_filename->type == cJSON_String) {
strcpy(filename, json_filename->valuestring);
printf("read uds filename success:%s\n", filename);
@@ -82,10 +82,10 @@ int Get_Uuid(const char* ptr, char* uuid,char* filename)
cJSON_Delete(json);
return result;
}
// <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
// 将字节数组写入文件
void Write_Byte_Array_To_File(char* local_path, char* data_array, long size)
{
// <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
// 将字节数组写入文件
FILE* outFile = fopen(local_path, "wb");
if (outFile != NULL) {
fwrite(data_array, sizeof(char), size, outFile);
@@ -98,21 +98,21 @@ void Write_Byte_Array_To_File(char* local_path, char* data_array, long size)
}
void Save_File(const char* ptr, char* local_path)
{
cJSON* json = cJSON_Parse((char*)ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
cJSON* json = cJSON_Parse((char*)ptr); //json格式序列化
cJSON* json_success;
cJSON* json_data;
cJSON* json_msg;
if (json) {
json_success = cJSON_GetObjectItem(json, "sucess"); //<EFBFBD><EFBFBD>ȡsuccess
json_msg = cJSON_GetObjectItem(json, "msg"); //<EFBFBD><EFBFBD>ȡsuccess
json_data = cJSON_GetObjectItem(json, "data"); //<EFBFBD><EFBFBD>ȡdata
json_success = cJSON_GetObjectItem(json, "sucess"); //获取success
json_msg = cJSON_GetObjectItem(json, "msg"); //获取success
json_data = cJSON_GetObjectItem(json, "data"); //获取data
if (json_success && json_success->type == cJSON_True) {
printf("save uds file success\n");
if (json_data && json_data->type == cJSON_String) {
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 计算解码后的字符串长度
long decodedLen = strlen(json_data->valuestring) * 3 / 4;
char* decodedStr = (char*)malloc(decodedLen + 1);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Base64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 进行Base64解码
int success = base64_decode(json_data->valuestring, strlen(json_data->valuestring), decodedStr, &decodedLen);
Write_Byte_Array_To_File(local_path, decodedStr, decodedLen);
free(decodedStr);
@@ -136,58 +136,58 @@ int WebAPI_Uds_Upload(char* strUrl, char* loacl_path, char* uuid,char* filename)
{
int result = 0;
printf("loaclpath: %s\n", loacl_path);
// curl<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
// curl初始化
CURL* curl = curl_easy_init();
// curl<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// curl返回值
CURLcode res;
if (curl)
{
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>curl<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
//设置curl的请求头
struct curl_slist* header_list = NULL;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Content-TypeΪmultipart/form-data
//设置Content-Typemultipart/form-data
header_list = curl_slist_append(header_list, "Content-Type: multipart/form-data");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//不接收响应头数据0代表不接收 1代表接收
curl_easy_setopt(curl, CURLOPT_HEADER, 0);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpost<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//设置请求为post请求
curl_easy_setopt(curl, CURLOPT_POST, 1);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>URL<EFBFBD><EFBFBD>ַ
//设置请求的URL地址
curl_easy_setopt(curl, CURLOPT_URL, strUrl);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
//设置post请求的参数
struct curl_httppost* formpost = NULL;
struct curl_httppost* lastptr = NULL;
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>form-data<EFBFBD>ֶ<EFBFBD>
// 添加form-data字段
curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "file", CURLFORM_FILE, loacl_path, CURLFORM_END);
//curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "password", CURLFORM_COPYCONTENTS, "secretpassword", CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ssl<EFBFBD><EFBFBD>֤
//设置ssl验证
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
//CURLOPT_VERBOSE<EFBFBD><EFBFBD>ֵΪ1ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ϸ<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//CURLOPT_VERBOSE的值为1时会显示详细的调试信息
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>պ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
//设置数据接收和写入函数
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);
string resPost0;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&resPost0);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
//<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>ʱʱ<EFBFBD><EFBFBD>
//设置超时时间
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
printf(">>>uds upload Post in curl post\n");
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 开启post请求
res = curl_easy_perform(curl);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
// 检查请求是否成功
if (res != CURLE_OK) {
printf("uds upload failed res code: ");
result = 0;
}
else {
printf("uds upload success,string %s", resPost0.c_str());
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webapi<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD>
//后期添加webapi返回值判断
result=Get_Uuid(resPost0.c_str(), uuid,filename);
}
// <EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Դ
// 释放资源
curl_slist_free_all(header_list);
curl_formfree(formpost);
}
@@ -201,23 +201,23 @@ int WebAPI_Uds_Upload(char* strUrl, char* loacl_path, char* uuid,char* filename)
}
void WebAPI_Uds_Download(char* strUrl, char* uuid, char* local_path,char* filename)
{
// curl<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
// curl初始化
CURL* curl = curl_easy_init();
// curl<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// curl返回值
CURLcode res;
if (curl)
{
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>curl<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
//设置curl的请求头
struct curl_slist* header_list = NULL;
header_list = curl_slist_append(header_list, "Content-Type:application/json;");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//不接收响应头数据0代表不接收 1代表接收
curl_easy_setopt(curl, CURLOPT_HEADER, 0);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpost<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//设置请求为post请求
curl_easy_setopt(curl, CURLOPT_POST, 1);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>URL<EFBFBD><EFBFBD>ַ
//设置请求的URL地址
curl_easy_setopt(curl, CURLOPT_URL, strUrl);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
//设置post请求的参数
cJSON* json_root = cJSON_CreateObject();
cJSON_AddItemToObject(json_root, "isWrap", cJSON_CreateString("1"));
cJSON_AddItemToObject(json_root, "storeId", cJSON_CreateString(uuid));
@@ -225,30 +225,30 @@ void WebAPI_Uds_Download(char* strUrl, char* uuid, char* local_path,char* filena
char* szjson = cJSON_Print(json_root);
printf(">>>json %s\n", szjson);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, szjson);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ssl<EFBFBD><EFBFBD>֤
//设置ssl验证
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
//CURLOPT_VERBOSE<EFBFBD><EFBFBD>ֵΪ1ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ϸ<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//CURLOPT_VERBOSE的值为1时会显示详细的调试信息
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>պ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
//设置数据接收和写入函数
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply);
string resPost0;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&resPost0);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
//<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>ʱʱ<EFBFBD><EFBFBD>
//设置超时时间
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
printf(">>>uds download Post in curl post\n");
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 开启post请求
res = curl_easy_perform(curl);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
// 检查请求是否成功
if (res != CURLE_OK) {
printf("uds download failed res code: ");
}
else {
printf("uds download success,string %s", resPost0.c_str());
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webapi<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD>
//后期添加webapi返回值判断
Save_File(resPost0.c_str(), local_path);
}
curl_slist_free_all(header_list);