add log4cplus
This commit is contained in:
@@ -6,18 +6,18 @@
|
||||
#include <string>
|
||||
#include "../mms/db_interface.h"
|
||||
|
||||
#include "../include/rocketmq/CProducer.h"
|
||||
#include "../include/rocketmq/CMessage.h"
|
||||
#include "../include/rocketmq/CSendResult.h"
|
||||
#include "../include/rocketmq/SimpleProducer.h"
|
||||
#include "../rocketmq/CProducer.h"
|
||||
#include "../rocketmq/CMessage.h"
|
||||
#include "../rocketmq/CSendResult.h"
|
||||
#include "../rocketmq/SimpleProducer.h"
|
||||
|
||||
//测试300数据用lnk20241202
|
||||
#include <ctime>
|
||||
#include <QThread>
|
||||
//测试300数据用
|
||||
//lnk20241209添加队列选择
|
||||
#include "../include/rocketmq/MQSelector.h"
|
||||
#include "../include/rocketmq/MQMessageQueue.h"
|
||||
#include "../rocketmq/MQSelector.h"
|
||||
#include "../rocketmq/MQMessageQueue.h"
|
||||
//#include <atomic>
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
@@ -25,13 +25,13 @@
|
||||
#include <cstring>
|
||||
|
||||
//引入消费起点
|
||||
#include "../include/rocketmq/DefaultMQPushConsumer.h"
|
||||
#include "../include/rocketmq/ConsumeType.h"
|
||||
#include "../rocketmq/DefaultMQPushConsumer.h"
|
||||
#include "../rocketmq/ConsumeType.h"
|
||||
|
||||
// 引入提供的消费者接口头文件
|
||||
#include "../include/rocketmq/CPushConsumer.h"
|
||||
#include "../include/rocketmq/CCommon.h"
|
||||
#include "../include/rocketmq/CMessageExt.h"
|
||||
#include "../rocketmq/CPushConsumer.h"
|
||||
#include "../rocketmq/CCommon.h"
|
||||
#include "../rocketmq/CMessageExt.h"
|
||||
#include <map>
|
||||
#include <pthread.h> // 用于互斥锁(在 C++98 中没有 std::mutex)
|
||||
#include <utility> // for std::pair
|
||||
|
||||
@@ -19,7 +19,7 @@ using namespace std;
|
||||
#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
|
||||
@@ -27,15 +27,15 @@ extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
// Base64 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// Base64 编码表
|
||||
const char base64_chars[] =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"abcdefghijklmnopqrstuvwxyz"
|
||||
"0123456789+/";
|
||||
|
||||
//base64 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//base64 解码表
|
||||
static const unsigned char base64_decode_table[] = {
|
||||
//ÿ<EFBFBD><EFBFBD>16<EFBFBD><EFBFBD>
|
||||
//每行16个
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //1 - 16
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //17 - 32
|
||||
0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,63, //33 - 48
|
||||
@@ -47,26 +47,26 @@ extern "C" {
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief base64_decode base64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param indata <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param inlen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>С
|
||||
* @param outdata <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param outlen <EFBFBD><EFBFBD><EFBFBD><EFBFBD><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 base64_decode base64解码
|
||||
* @param indata 需解码的数据
|
||||
* @param inlen 需解码的数据大小
|
||||
* @param outdata 解码后输出的数据
|
||||
* @param outlen 解码后输出的数据大小
|
||||
* @return int 0:成功 -1:无效参数
|
||||
* 注意:解码的数据的大小必须大于4,且是4的倍数
|
||||
*/
|
||||
int base64_decode(const char* indata, int inlen, char* outdata, long* outlen)
|
||||
{
|
||||
if (indata == NULL || inlen <= 0 || (outdata == NULL && outlen == NULL)) {
|
||||
return -1;
|
||||
}
|
||||
if (inlen < 4 || inlen % 4 != 0) { //<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD> //inlen < 4 ||
|
||||
if (inlen < 4 || inlen % 4 != 0) { //需要解码的数据长度不是4的倍数 //inlen < 4 ||
|
||||
return -1;
|
||||
}
|
||||
|
||||
int i, j;
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//计算解码后的字符串长度
|
||||
int len = inlen / 4 * 3;
|
||||
if (indata[inlen - 1] == '=') {
|
||||
len--;
|
||||
@@ -88,10 +88,10 @@ extern "C" {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Base64 <EFBFBD><EFBFBD><EFBFBD>뺯<EFBFBD><EFBFBD>
|
||||
// Base64 编码函数
|
||||
char* base64_encode_char(const unsigned char* data, size_t input_length, size_t* output_length) {
|
||||
*output_length = 4 * ((input_length + 2) / 3); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
char* encoded_data = (char*)malloc(*output_length + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬+1 Ϊ '\0'
|
||||
*output_length = 4 * ((input_length + 2) / 3); // 输出长度计算
|
||||
char* encoded_data = (char*)malloc(*output_length + 1); // 分配内存,+1 为 '\0'
|
||||
if (encoded_data == NULL) return NULL;
|
||||
|
||||
for (int i = 0, j = 0; i < input_length;) {
|
||||
@@ -107,47 +107,47 @@ extern "C" {
|
||||
encoded_data[j++] = (i * 2 + 1 / 3) < *output_length ? base64_chars[triple & 0x3F] : '=';
|
||||
}
|
||||
|
||||
encoded_data[*output_length] = '\0'; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
encoded_data[*output_length] = '\0'; // 添加字符串结束符
|
||||
return encoded_data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <EFBFBD>ж<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊpower{}<EFBFBD><EFBFBD>ʽ
|
||||
/// 判断字符串是否为power{}格式
|
||||
/// </summary>
|
||||
/// <param name="str"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="output"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD></param>
|
||||
/// <param name="output_size"><EFBFBD>ֶγ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="extracted_length"><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD></param>
|
||||
/// <param name="str">待提取字符串</param>
|
||||
/// <param name="output">结果字段</param>
|
||||
/// <param name="output_size">字段长度限制</param>
|
||||
/// <param name="extracted_length">提取出的内容长度</param>
|
||||
/// <returns></returns>
|
||||
bool extract_if_power(const char* str, char* output, size_t output_size, size_t* extracted_length) {
|
||||
const char* prefix = "power{";
|
||||
size_t prefix_length = strlen(prefix);
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ
|
||||
// 检查前缀
|
||||
if (strncmp(str, prefix, prefix_length) != 0) {
|
||||
return false; // ǰ<EFBFBD><EFBFBD>ƥ<EFBFBD><EFBFBD>
|
||||
return false; // 前缀不匹配
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD>ұպϵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 查找闭合的花括号
|
||||
const char* close_brace = strchr(str + prefix_length, '}');
|
||||
if (close_brace == NULL) {
|
||||
return false; // û<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>պϵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return false; // 没有找到闭合的花括号
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// 计算要提取的内容长度
|
||||
size_t content_length = close_brace - (str + prefix_length);
|
||||
if (content_length >= output_size) {
|
||||
return false; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return false; // 内容太长,无法放入输出缓冲区
|
||||
}
|
||||
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// 复制内容到输出缓冲区
|
||||
strncpy(output, str + prefix_length, content_length);
|
||||
output[content_length] = '\0'; // <EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>
|
||||
printf("text: %s,length:%d\n", output, content_length); // ע<EFBFBD>⣺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫȷ<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>null<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
output[content_length] = '\0'; // 添加空终止符
|
||||
printf("text: %s,length:%d\n", output, content_length); // 注意:这里需要确保文本是以null终止的字符串
|
||||
// 设置提取出的内容长度
|
||||
*extracted_length = content_length;
|
||||
|
||||
return true; // <EFBFBD><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD>
|
||||
return true; // 提取成功
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
@@ -35,29 +35,29 @@ size_t req_reply_datahub(void* ptr, size_t size, size_t nmemb, void* stream)
|
||||
void SendWebAPI_Datahub(const string strUrl,char* topic,char* data)
|
||||
{
|
||||
|
||||
// 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.c_str());
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//设置post请求的参数
|
||||
cJSON* json_root = cJSON_CreateObject();
|
||||
|
||||
cJSON_AddItemToObject(json_root, "topic", cJSON_CreateString(topic));
|
||||
@@ -67,16 +67,16 @@ void SendWebAPI_Datahub(const string strUrl,char* topic,char* data)
|
||||
|
||||
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_datahub);
|
||||
|
||||
string resPost0;
|
||||
@@ -84,22 +84,22 @@ void SendWebAPI_Datahub(const string strUrl,char* topic,char* data)
|
||||
|
||||
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(">>>Testaliyun datahub 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("aliyun datahub failed res code: ");
|
||||
}
|
||||
else {
|
||||
printf("aliyun datahub success,string %s", resPost0.c_str());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webapi<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD>
|
||||
//后期添加webapi返回值判断
|
||||
}
|
||||
|
||||
curl_slist_free_all(header_list);
|
||||
|
||||
478
cfg_parse/log4.cpp
Normal file
478
cfg_parse/log4.cpp
Normal file
@@ -0,0 +1,478 @@
|
||||
|
||||
#include "../log4cplus/logger.h"
|
||||
#include "../log4cplus/configurator.h"
|
||||
#include "../log4cplus/fileappender.h"
|
||||
#include "../log4cplus/layout.h"
|
||||
#include "../log4cplus/ndc.h"
|
||||
#include "../log4cplus/log4.h"
|
||||
#include "../log4cplus/spi/loggingevent.h"
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <ctime>
|
||||
#include <sstream>
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
#include <cstring>
|
||||
//目录创建
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
//kafka结构定义
|
||||
#include "../json/mms_json_inter.h"
|
||||
|
||||
|
||||
#include "../mms/rdb_client.h"
|
||||
#include "../include/node.h"//lnk20241223
|
||||
|
||||
|
||||
extern unsigned int g_node_id;
|
||||
extern int g_front_seg_index;
|
||||
extern char subdir[128];
|
||||
extern node_t* g_node;
|
||||
|
||||
|
||||
//mq
|
||||
extern QMutex kafka_data_list_mutex; //Kafka发送数据锁
|
||||
extern QList<Ckafka_data_t> kafka_data_list; //kafka发送数据链表
|
||||
|
||||
//辅助函数
|
||||
extern std::string intToString(int number);
|
||||
|
||||
//日志主题
|
||||
extern std::string G_LOG_TOPIC;
|
||||
|
||||
//log4命名空间
|
||||
using namespace log4cplus;
|
||||
using namespace log4cplus::helpers;
|
||||
|
||||
////////////////////////////////////////////////////////辅助函数
|
||||
std::string get_front_type_from_subdir() {
|
||||
if (std::strstr(subdir, "cfg_3s_data") != NULL)
|
||||
return "realTime";
|
||||
else if (std::strstr(subdir, "cfg_soe_comtrade") != NULL)
|
||||
return "comtrade";
|
||||
else if (std::strstr(subdir, "cfg_recallhis_data") != NULL)
|
||||
return "recall";
|
||||
else if (std::strstr(subdir, "cfg_stat_data") != NULL)
|
||||
return "stat";
|
||||
else
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
// 递归创建目录
|
||||
bool create_directory_recursive(const std::string& path) {
|
||||
size_t pos = 0;
|
||||
std::string current;
|
||||
while (pos != std::string::npos) {
|
||||
pos = path.find('/', pos + 1);
|
||||
current = path.substr(0, pos);
|
||||
if (!current.empty() && access(current.c_str(), F_OK) != 0) {
|
||||
if (mkdir(current.c_str(), 0755) != 0) {
|
||||
perror(("mkdir failed: " + current).c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
TypedLogger::TypedLogger() {}
|
||||
TypedLogger::TypedLogger(const Logger& l, int t) : logger(l), logtype(t) {}
|
||||
|
||||
DebugSwitch::DebugSwitch() : debug_open(false), min_level(WARN_LOG_LEVEL) {}
|
||||
void DebugSwitch::open() { debug_open = true; }
|
||||
void DebugSwitch::close() {
|
||||
debug_open = false;
|
||||
targets.clear();
|
||||
type_enable.clear();
|
||||
}
|
||||
void DebugSwitch::set_target(const std::string& name) { targets.insert(name); }
|
||||
void DebugSwitch::set_level(int level) { min_level = level; }
|
||||
void DebugSwitch::enable_type(int type) { type_enable[type] = true; }
|
||||
void DebugSwitch::disable_type(int type) { type_enable[type] = false; }
|
||||
|
||||
bool DebugSwitch::match(const std::string& logger_name, int level, int logtype) {
|
||||
if (!debug_open) return false;
|
||||
if (level < min_level) return false;
|
||||
if (type_enable.count(logtype) && !type_enable[logtype]) return false;
|
||||
std::set<std::string>::iterator it;
|
||||
for (it = targets.begin(); it != targets.end(); ++it) {
|
||||
if (logger_name.find(*it) != std::string::npos)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
std::map<std::string, TypedLogger> logger_map;
|
||||
DebugSwitch g_debug_switch;
|
||||
|
||||
class SendAppender : public Appender {
|
||||
protected:
|
||||
void append(const spi::InternalLoggingEvent& event) {
|
||||
std::string logger_name = event.getLoggerName();
|
||||
int level = event.getLogLevel();
|
||||
std::string msg = event.getMessage();
|
||||
|
||||
int logtype = (logger_name.find(".COM") != std::string::npos) ? LOGTYPE_COM : LOGTYPE_DATA;
|
||||
std::string level_str;
|
||||
if (logger_name.find("process") == 0)
|
||||
level_str = "process";
|
||||
else if (logger_name.find("monitor") != std::string::npos)
|
||||
level_str = "measurepoint";
|
||||
else
|
||||
level_str = "terminal";
|
||||
|
||||
if (level == ERROR_LOG_LEVEL || level == WARN_LOG_LEVEL || g_debug_switch.match(logger_name, level, logtype)) {
|
||||
std::ostringstream oss;
|
||||
oss << "{\"processNo\":\"" << intToString(g_front_seg_index)
|
||||
<< "\",\"id\":\"" << logger_name
|
||||
<< "\",\"level\":\"" << level_str
|
||||
<< "\",\"grade\":\"" << level
|
||||
<< "\",\"logtype\":\"" << (logtype == LOGTYPE_COM ? "com" : "data")
|
||||
<< "\",\"frontType\":\"" << get_front_type_from_subdir()
|
||||
<< "\",\"log\":\"" << escape_json(msg) << "\"}";
|
||||
|
||||
std::string jsonString = oss.str();
|
||||
|
||||
Ckafka_data_t connect_info;
|
||||
connect_info.strTopic = QString::fromStdString(G_LOG_TOPIC);
|
||||
connect_info.strText = QString::fromStdString(jsonString);
|
||||
|
||||
kafka_data_list_mutex.lock();
|
||||
kafka_data_list.append(connect_info);
|
||||
kafka_data_list_mutex.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
std::string escape_json(const std::string& input) {
|
||||
std::ostringstream ss;
|
||||
for (unsigned int i = 0; i < input.size(); ++i) {
|
||||
switch (input[i]) {
|
||||
case '\\': ss << "\\\\"; break;
|
||||
case '"': ss << "\\\""; break;
|
||||
case '\n': ss << "\\n"; break;
|
||||
case '\r': ss << "\\r"; break;
|
||||
case '\t': ss << "\\t"; break;
|
||||
default: ss << input[i]; break;
|
||||
}
|
||||
}
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual void close() {
|
||||
// 可空实现
|
||||
}
|
||||
|
||||
public:
|
||||
SendAppender() {}
|
||||
};
|
||||
|
||||
//用来控制日志上送的结构
|
||||
struct LOGEntry {
|
||||
std::string id;
|
||||
std::string level; // terminal / measurepoint
|
||||
int logtype; // com / data
|
||||
int min_grade;
|
||||
int countdown;
|
||||
};
|
||||
|
||||
//日志上送map管理
|
||||
std::map<std::string, LOGEntry> g_log_entries;
|
||||
pthread_mutex_t g_log_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
// 生成唯一 key
|
||||
std::string build_debug_key(const std::string& id, const std::string& level, int logtype) {
|
||||
return id + "|" + level + "|" + (logtype == 1 ? "COM" : "DATA");
|
||||
}
|
||||
|
||||
// 外部线程中调用:每秒更新所有倒计时,0 则删除
|
||||
void update_log_entries_countdown() {
|
||||
pthread_mutex_lock(&g_log_mutex);
|
||||
std::map<std::string, LOGEntry>::iterator it = g_log_entries.begin();
|
||||
while (it != g_log_entries.end()) {
|
||||
if (it->second.countdown > 0) {
|
||||
it->second.countdown--;
|
||||
if (it->second.countdown == 0) {
|
||||
std::cout << "[LOG] debug日志上送自动关闭: " << it->first << std::endl;
|
||||
it = g_log_entries.erase(it);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
++it;
|
||||
}
|
||||
pthread_mutex_unlock(&g_log_mutex);
|
||||
}
|
||||
|
||||
void process_log_command(const std::string& id, const std::string& level, const std::string& grade, const std::string& logtype_str) {
|
||||
if (level != "terminal" && level != "measurepoint") return;
|
||||
|
||||
int type = (logtype_str == "com") ? LOGTYPE_COM : LOGTYPE_DATA;
|
||||
int grade_level = (grade == "DEBUG") ? DEBUG_LOG_LEVEL : INFO_LOG_LEVEL;
|
||||
|
||||
std::string key = build_debug_key(id, level, type);
|
||||
|
||||
pthread_mutex_lock(&g_log_mutex);
|
||||
|
||||
LOGEntry& entry = g_log_entries[key]; // 会自动 insert 或取已有
|
||||
entry.id = id;
|
||||
entry.level = level;
|
||||
entry.logtype = type;
|
||||
entry.min_grade = grade_level;
|
||||
entry.countdown = 60; // 重置倒计时
|
||||
|
||||
pthread_mutex_unlock(&g_log_mutex);
|
||||
|
||||
}
|
||||
|
||||
Logger init_logger(const std::string& full_name, const std::string& file_dir, const std::string& base_file) {
|
||||
// 确保日志目录存在
|
||||
create_directory_recursive(file_dir);
|
||||
|
||||
Logger logger = Logger::getInstance(full_name);
|
||||
std::string file_path = file_dir + "/" + base_file + ".log";
|
||||
|
||||
// 使用滚动日志(大小轮转),最多保留 2 个备份,每个最大 1MB
|
||||
SharedAppenderPtr fileAppender(new RollingFileAppender(file_path, 1 * 1024 * 1024, 2));
|
||||
|
||||
fileAppender->setLayout(std::auto_ptr<Layout>(
|
||||
new PatternLayout("%D{%Y-%m-%d %H:%M:%S} [%p] [%c] %m%n")));
|
||||
|
||||
SharedAppenderPtr sendAppender(new SendAppender());
|
||||
logger.addAppender(fileAppender);
|
||||
logger.addAppender(sendAppender);
|
||||
logger.setLogLevel(DEBUG_LOG_LEVEL);
|
||||
return logger;
|
||||
}
|
||||
|
||||
//进程的日志
|
||||
void init_logger_process() {
|
||||
std::string base_dir = std::string("/FeProject/") + subdir + "/processNo" + intToString(g_front_seg_index) + "/log";
|
||||
logger_map["process"] = TypedLogger(init_logger("process", base_dir, "process"), LOGTYPE_DATA);
|
||||
std::cout << "process log init ok" << std::endl;
|
||||
}
|
||||
|
||||
//终端的日志
|
||||
void init_loggers_bydevid(const char* dev_id)
|
||||
{
|
||||
if (!dev_id) return;
|
||||
|
||||
std::string terminal_id(dev_id); // 转为 std::string
|
||||
std::string base_dir = std::string("/FeProject/") + subdir + "/processNo" + intToString(g_front_seg_index) + "/log";
|
||||
|
||||
ied_t* ied = NULL;
|
||||
int iedno;
|
||||
ied_usr_t* ied_usr = NULL;
|
||||
|
||||
for (iedno = 0; iedno < g_node->n_clients; iedno++) {
|
||||
ied = g_node->clients[iedno];
|
||||
|
||||
if (!ied || !ied->usr_ext) {
|
||||
std::cout << "ied No."<< iedno << " is null" << std::endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
|
||||
//跳过不匹配的终端
|
||||
if (strcmp(ied_usr->terminal_id, dev_id) != 0) continue;
|
||||
|
||||
const char* ip_cstr = (ied->channel[0].addr_str != NULL) ? ied->channel[0].addr_str : "unknown";
|
||||
|
||||
std::string ip_str(ip_cstr);
|
||||
|
||||
std::string device_dir = base_dir + "/" + ip_str;
|
||||
|
||||
std::string device_key = std::string("terminal.") + dev_id;
|
||||
|
||||
// 添加判断:终端日志 logger 是否已存在
|
||||
if (logger_map.find(ip_str + ".COM") == logger_map.end() &&
|
||||
logger_map.find(ip_str + ".DATA") == logger_map.end()) {
|
||||
|
||||
// 所有终端日志(com 和 data)写到同一个 device 日志文件中
|
||||
Logger device_logger = init_logger(device_key, device_dir, dev_id); //用终端id作为日志文件名
|
||||
logger_map[ip_str + ".COM"] = TypedLogger(device_logger, LOGTYPE_COM);
|
||||
logger_map[ip_str + ".DATA"] = TypedLogger(device_logger, LOGTYPE_DATA);
|
||||
}
|
||||
|
||||
// 初始化监测点
|
||||
// 监测点 logger 名称格式:monitor.<mp_id>.COM / .DATA
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
if (strlen(ied_usr->LD_info[i].mp_id) > 0){
|
||||
std::ostringstream mon_key, mon_path, mon_name;
|
||||
mon_key << "monitor." << ied_usr->LD_info[i].mp_id;
|
||||
mon_path << device_dir << "/monitor" << i;//终端路径下用monitor+序号作为目录
|
||||
mon_name << ied_usr->LD_info[i].mp_id;
|
||||
|
||||
// 添加判断:监测点 logger 是否已存在
|
||||
if (logger_map.find(mon_key.str() + ".COM") == logger_map.end() &&
|
||||
logger_map.find(mon_key.str() + ".DATA") == logger_map.end()) {
|
||||
|
||||
Logger mon_logger = init_logger(mon_key.str(), mon_path.str(), mon_name.str());
|
||||
logger_map[mon_key.str() + ".COM"] = TypedLogger(mon_logger, LOGTYPE_COM);
|
||||
logger_map[mon_key.str() + ".DATA"] = TypedLogger(mon_logger, LOGTYPE_DATA);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
break; // 只匹配一个 terminal_id
|
||||
}
|
||||
}
|
||||
|
||||
void init_loggers() {
|
||||
std::string base_dir = std::string("/FeProject/") + subdir + "/processNo" + intToString(g_front_seg_index) + "/log";
|
||||
|
||||
ied_t* ied = NULL;
|
||||
int iedno;
|
||||
ied_usr_t* ied_usr = NULL;
|
||||
|
||||
for (iedno = 0; iedno < g_node->n_clients; iedno++) {
|
||||
ied = g_node->clients[iedno];
|
||||
|
||||
if (!ied || !ied->usr_ext) {
|
||||
std::cout << "ied No."<< iedno << " is null" << std::endl;
|
||||
continue;
|
||||
}
|
||||
|
||||
ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
|
||||
const char* ip_cstr = (ied->channel[0].addr_str != NULL) ? ied->channel[0].addr_str : "unknown";
|
||||
|
||||
std::string ip_str(ip_cstr);
|
||||
|
||||
std::string device_dir = base_dir + "/" + ip_str;
|
||||
|
||||
std::string device_key = std::string("terminal.") + ied_usr->terminal_id;
|
||||
|
||||
// 所有终端日志(com 和 data)写到同一个 device 日志文件中
|
||||
Logger device_logger = init_logger(device_key, device_dir, ied_usr->terminal_id); //用终端id作为日志文件名
|
||||
logger_map[device_key + ".COM"] = TypedLogger(device_logger, LOGTYPE_COM);
|
||||
logger_map[device_key + ".DATA"] = TypedLogger(device_logger, LOGTYPE_DATA);
|
||||
|
||||
char buf[256];
|
||||
sprintf(buf, "终端id:%s终端级日志初始化完毕", ied_usr->terminal_id);
|
||||
LOG4CPLUS_DEBUG(logger_map[device_key + ".DATA"].logger, buf);
|
||||
|
||||
// 初始化监测点
|
||||
// 监测点 logger 名称格式:monitor.<mp_id>.COM / .DATA
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
if (strlen(ied_usr->LD_info[i].mp_id) > 0){
|
||||
std::ostringstream mon_key, mon_path, mon_name;
|
||||
mon_key << "monitor." << ied_usr->LD_info[i].mp_id;
|
||||
mon_path << device_dir << "/monitor" << i;//终端路径下用monitor+序号作为目录
|
||||
mon_name << ied_usr->LD_info[i].mp_id;
|
||||
|
||||
Logger mon_logger = init_logger(mon_key.str(), mon_path.str(), mon_name.str());
|
||||
|
||||
logger_map[mon_key.str() + ".COM"] = TypedLogger(mon_logger, LOGTYPE_COM);
|
||||
logger_map[mon_key.str() + ".DATA"] = TypedLogger(mon_logger, LOGTYPE_DATA);
|
||||
|
||||
char buf[256];
|
||||
sprintf(buf, "监测点id:%s监测点级日志初始化完毕", ied_usr->LD_info[i].mp_id);
|
||||
LOG4CPLUS_DEBUG(logger_map[mon_key.str() + ".DATA"].logger, buf);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void remove_loggers_by_terminal_id(const char* terminal_id_cstr) {
|
||||
if (!g_node || !terminal_id_cstr) return;
|
||||
|
||||
std::string terminal_id(terminal_id_cstr); // 转为 std::string
|
||||
|
||||
for (int iedno = 0; iedno < g_node->n_clients; ++iedno) {
|
||||
ied_t* ied = g_node->clients[iedno];
|
||||
if (!ied || !ied->usr_ext) continue;
|
||||
|
||||
ied_usr_t* ied_usr = (ied_usr_t*)ied->usr_ext;
|
||||
if (strcmp(ied_usr->terminal_id, terminal_id.c_str()) != 0) continue;
|
||||
|
||||
// 删除终端日志 logger
|
||||
std::string com_key = "terminal." + terminal_id + ".COM";
|
||||
std::string data_key = "terminal." + terminal_id + ".DATA";
|
||||
|
||||
if (logger_map.count(com_key)) {
|
||||
logger_map[com_key].logger.removeAllAppenders();
|
||||
logger_map.erase(com_key);
|
||||
}
|
||||
|
||||
if (logger_map.count(data_key)) {
|
||||
logger_map[data_key].logger.removeAllAppenders();
|
||||
logger_map.erase(data_key);
|
||||
}
|
||||
|
||||
// 删除监测点日志 logger
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
const char* mp_id = ied_usr->LD_info[i].mp_id;
|
||||
if (strlen(mp_id) > 0) {
|
||||
std::string mon_prefix = std::string("monitor.") + mp_id;
|
||||
|
||||
std::string mon_com_key = mon_prefix + ".COM";
|
||||
std::string mon_data_key = mon_prefix + ".DATA";
|
||||
|
||||
if (logger_map.count(mon_com_key)) {
|
||||
logger_map[mon_com_key].logger.removeAllAppenders();
|
||||
logger_map.erase(mon_com_key);
|
||||
}
|
||||
|
||||
if (logger_map.count(mon_data_key)) {
|
||||
logger_map[mon_data_key].logger.removeAllAppenders();
|
||||
logger_map.erase(mon_data_key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "[LOG] Logger for terminal_id=" << terminal_id << " removed.\n";
|
||||
break; // 找到匹配终端后退出
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
// 公共函数
|
||||
void log4_log_with_level(const char* key, const char* msg, int level) {
|
||||
std::map<std::string, TypedLogger>::iterator it = logger_map.find(key);
|
||||
if (it == logger_map.end()) return;
|
||||
|
||||
Logger logger = it->second.logger;
|
||||
switch (level) {
|
||||
case 0: LOG4CPLUS_DEBUG(logger, msg); break;
|
||||
case 1: LOG4CPLUS_INFO(logger, msg); break;
|
||||
case 2: LOG4CPLUS_WARN(logger, msg); break;
|
||||
case 3: LOG4CPLUS_ERROR(logger, msg); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
// 四个包装函数
|
||||
void log_debug(const char* key, const char* msg) { log4_log_with_level(key, msg, 0); }
|
||||
void log_info (const char* key, const char* msg) { log4_log_with_level(key, msg, 1); }
|
||||
void log_warn (const char* key, const char* msg) { log4_log_with_level(key, msg, 2); }
|
||||
void log_error(const char* key, const char* msg) { log4_log_with_level(key, msg, 3); }
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
int main() {
|
||||
initialize();
|
||||
init_loggers();
|
||||
|
||||
LOG4CPLUS_INFO(logger_map["process.1.data"].logger, "程序启动,PID=" << getpid());
|
||||
|
||||
LOG4CPLUS_WARN(logger_map["terminal.192.168.1.1.com"].logger, "串口异常,尝试重连");
|
||||
LOG4CPLUS_INFO(logger_map["terminal.192.168.1.1.data"].logger, "终端运行状态正常");
|
||||
LOG4CPLUS_DEBUG(logger_map["measurepoint.192.168.1.1.monitor1.data"].logger, "电压测量值=220.1V");
|
||||
|
||||
process_log_command("192.168.1.1.monitor1", "measurepoint", "DEBUG", "data");
|
||||
LOG4CPLUS_DEBUG(logger_map["measurepoint.192.168.1.1.monitor1.data"].logger, "频率测量值=50.0Hz");
|
||||
|
||||
sleep(65);
|
||||
LOG4CPLUS_ERROR(logger_map["terminal.192.168.1.2.data"].logger, "终端掉线");
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
@@ -18,7 +18,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
|
||||
@@ -35,39 +35,39 @@ size_t req_reply_nacos(void* ptr, size_t size, size_t nmemb, void* stream)
|
||||
void read_nacos_param(const char* ptr, char* postgres_uid, char* postgres_pwd, char* web_clientid, char* web_clientsecret) {
|
||||
//cout << ">>>GetDevice in reply" << (char*)ptr;
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse((char*)ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse((char*)ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error %s\n", cJSON_GetErrorPtr());
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || json_node->valuestring == NULL || json_node->valuestring == "/0" || json_node->valuestring == "" || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || json_node->valuestring == NULL || json_node->valuestring == "/0" || json_node->valuestring == "" || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "postgres_uid"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "postgres_uid"); //获取result
|
||||
if (json_node != NULL && strcmp(json_node->valuestring, "null") != 0) {
|
||||
strcpy(postgres_uid, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "postgres_pwd"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "postgres_pwd"); //获取result
|
||||
if (json_node != NULL && strcmp(json_node->valuestring, "null") != 0) {
|
||||
strcpy(postgres_pwd, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "web_clientid"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "web_clientid"); //获取result
|
||||
if (json_node != NULL && strcmp(json_node->valuestring, "null") != 0) {
|
||||
strcpy(web_clientid, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "web_clientsecret"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "web_clientsecret"); //获取result
|
||||
if (json_node != NULL && strcmp(json_node->valuestring, "null") != 0) {
|
||||
strcpy(web_clientsecret, json_node->valuestring);
|
||||
}
|
||||
@@ -77,57 +77,57 @@ void read_nacos_param(const char* ptr, char* postgres_uid, char* postgres_pwd, c
|
||||
}
|
||||
void releaseMemory(char** ptr) {
|
||||
if (*ptr != NULL) {
|
||||
free(*ptr); // <EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
free(*ptr); // 释放内存
|
||||
}
|
||||
}
|
||||
void SendWebAPI_Nacos(const string strUrl, const char* code, char* postgres_uid, char* postgres_pwd, char* web_clientid, char* web_clientsecret)
|
||||
{
|
||||
// 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.c_str());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//设置post请求的参数
|
||||
cJSON* json_root = cJSON_CreateObject();
|
||||
cJSON_AddItemToObject(json_root, "code", cJSON_CreateString(code));
|
||||
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_nacos);
|
||||
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(">>>Test nacos 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("nacos failed res code: ");
|
||||
}
|
||||
else {
|
||||
printf("nacos success,string %s", resPost0.c_str());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>webapi<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ж<EFBFBD>
|
||||
//后期添加webapi返回值判断
|
||||
read_nacos_param(resPost0.c_str(), postgres_uid, postgres_pwd, web_clientid, web_clientsecret);
|
||||
}
|
||||
curl_slist_free_all(header_list);
|
||||
@@ -142,34 +142,34 @@ void SendWebAPI_Nacos(const string strUrl, const char* code, char* postgres_uid,
|
||||
}
|
||||
void SendWebAPI_Nacos_Ptr(const string strUrl, const char* code, char** ptr)
|
||||
{
|
||||
// curl<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
||||
// curl初始化
|
||||
CURL* curl = curl_easy_init();
|
||||
// curl<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||
// curl返回值
|
||||
CURLcode res;
|
||||
if (curl)
|
||||
{
|
||||
char url[100];
|
||||
sprintf(url, "%s?code=%s", strUrl.c_str(), code);
|
||||
printf(">>>json %s\n", url);
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>URL
|
||||
// 设置URL
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>պ<EFBFBD>д<EFBFBD>뺯<EFBFBD><EFBFBD>
|
||||
//设置数据接收和写入函数
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, req_reply_nacos);
|
||||
string resPost0;
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&resPost0);
|
||||
//<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
||||
//设置超时时间
|
||||
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10);
|
||||
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
|
||||
|
||||
// <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("nacos failed res code: ");
|
||||
}
|
||||
else {
|
||||
printf(">>> nacos return str:%s \n", resPost0.c_str());
|
||||
*ptr = (char*)malloc(strlen(resPost0.c_str()) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㹻<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||
*ptr = (char*)malloc(strlen(resPost0.c_str()) + 1); // 分配足够的内存空间
|
||||
if (*ptr != NULL) {
|
||||
strcpy(*ptr, resPost0.c_str());
|
||||
}
|
||||
@@ -196,96 +196,96 @@ void Read_Nacos_Param_Postgres(char** database_ip, char** database_port, char**
|
||||
char* ptr=NULL;
|
||||
SendWebAPI_Nacos_Ptr("http://127.0.0.1:8091/powerQuality/getProperties", "postgres", &ptr);
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse(ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse(ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error %s\n", cJSON_GetErrorPtr());
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "ip"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "ip"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*database_ip != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*database_ip);
|
||||
}
|
||||
*database_ip = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*database_ip = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*database_ip, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "port"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "port"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*database_port != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*database_port);
|
||||
}
|
||||
*database_port = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*database_port = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*database_port, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "database"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "database"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*postgres_database != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*postgres_database);
|
||||
}
|
||||
*postgres_database = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*postgres_database = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*postgres_database, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "username"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "username"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*postgres_username != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*postgres_username);
|
||||
}
|
||||
*postgres_username = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*postgres_username = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*postgres_username, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "password"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "password"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*postgres_password != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*postgres_password);
|
||||
}
|
||||
*postgres_password = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*postgres_password = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*postgres_password, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "schema"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "schema"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*postgres_schema != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*postgres_schema);
|
||||
}
|
||||
*postgres_schema = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*postgres_schema = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*postgres_schema, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "dnsname"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "dnsname"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*postgres_dnsname != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*postgres_dnsname);
|
||||
}
|
||||
*postgres_dnsname = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*postgres_dnsname = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*postgres_dnsname, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "tablePrefix"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "tablePrefix"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*postgres_tableprefix != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*postgres_tableprefix);
|
||||
}
|
||||
*postgres_tableprefix = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*postgres_tableprefix = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*postgres_tableprefix, json_node->valuestring);
|
||||
}
|
||||
}
|
||||
@@ -299,132 +299,132 @@ void Read_Nacos_Param_Kafka(char** broker_list, char** topic_stat, char** topic_
|
||||
char* ptr = NULL;
|
||||
SendWebAPI_Nacos_Ptr("http://127.0.0.1:8091/powerQuality/getProperties", "kafka", &ptr);
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse(ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse(ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error %s\n", cJSON_GetErrorPtr());
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "brokerList"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "brokerList"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*broker_list != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*broker_list);
|
||||
}
|
||||
*broker_list = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*broker_list = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*broker_list, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "hisTopic"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "hisTopic"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*topic_stat != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*topic_stat);
|
||||
}
|
||||
*topic_stat = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*topic_stat = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*topic_stat, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "pstTopic"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "pstTopic"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*topic_pst != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*topic_pst);
|
||||
}
|
||||
*topic_pst = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*topic_pst = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*topic_pst, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "pltTopic"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "pltTopic"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*topic_plt != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*topic_plt);
|
||||
}
|
||||
*topic_plt = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*topic_plt = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*topic_plt, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "eventTopic"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "eventTopic"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*topic_event != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*topic_event);
|
||||
}
|
||||
*topic_event = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*topic_event = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*topic_event, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "almTopic"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "almTopic"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*topic_alarm != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*topic_alarm);
|
||||
}
|
||||
*topic_alarm = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*topic_alarm = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*topic_alarm, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "sngTopic"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "sngTopic"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*topic_sng != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*topic_sng);
|
||||
}
|
||||
*topic_sng = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*topic_sng = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*topic_sng, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "protocol"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "protocol"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*protocol != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*protocol);
|
||||
}
|
||||
*protocol = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*protocol = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*protocol, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "mechanisms"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "mechanisms"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*mechanisms != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*mechanisms);
|
||||
}
|
||||
*mechanisms = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*mechanisms = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*mechanisms, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "serviceName"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "serviceName"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*service_name != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*service_name);
|
||||
}
|
||||
*service_name = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*service_name = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*service_name, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "principal"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "principal"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*principal != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*principal);
|
||||
}
|
||||
*principal = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*principal = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*principal, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "domainName"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "domainName"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*domain_name != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*domain_name);
|
||||
}
|
||||
*domain_name = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*domain_name = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*domain_name, json_node->valuestring);
|
||||
}
|
||||
}
|
||||
@@ -435,69 +435,69 @@ void Read_Nacos_Param_Web(char** client_id, char** client_secret, char** token_u
|
||||
char* ptr = NULL;
|
||||
SendWebAPI_Nacos_Ptr("http://127.0.0.1:8091/powerQuality/getProperties", "web", &ptr);
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse(ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse(ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error %s\n", cJSON_GetErrorPtr());
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "clientId"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "clientId"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*client_id != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*client_id);
|
||||
}
|
||||
*client_id = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*client_id = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*client_id, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "clientSecret"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "clientSecret"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*client_secret != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*client_secret);
|
||||
}
|
||||
*client_secret = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*client_secret = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*client_secret, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "tokenUrl"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "tokenUrl"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*token_url != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*token_url);
|
||||
}
|
||||
*token_url = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*token_url = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*token_url, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "deviceUrl"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "deviceUrl"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*device_url != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*device_url);
|
||||
}
|
||||
*device_url = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*device_url = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*device_url, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "grantType"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "grantType"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*grant_type != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*grant_type);
|
||||
}
|
||||
*grant_type = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*grant_type = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*grant_type, json_node->valuestring);
|
||||
}
|
||||
|
||||
@@ -509,46 +509,46 @@ void Read_Nacos_Param_Flag(int* file_flag, int* send_flag, int* front_inst, ch
|
||||
char* ptr = NULL;
|
||||
SendWebAPI_Nacos_Ptr("http://127.0.0.1:8091/powerQuality/getProperties", "flag", &ptr);
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse(ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse(ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error: %s\n", ptr);
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "fileFlag"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "fileFlag"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
*file_flag= atoi(json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "sendFlag"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "sendFlag"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
*send_flag = atoi(json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "frontInst"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "frontInst"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
*front_inst = atoi(json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "frontIP"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "frontIP"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
//***postgres_pwd = json_node->valuestring;
|
||||
if (*front_ip != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*front_ip);
|
||||
}
|
||||
*front_ip = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*front_ip = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*front_ip, json_node->valuestring);
|
||||
}
|
||||
|
||||
@@ -560,35 +560,35 @@ void Read_Nacos_Param_Recall(int* recall_len, int* recall_sta, int* recall_daily
|
||||
char* ptr = NULL;
|
||||
SendWebAPI_Nacos_Ptr("http://127.0.0.1:8091/powerQuality/getProperties", "recall", &ptr);
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse(ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse(ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error %s\n", cJSON_GetErrorPtr());
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "recall_lenth"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "recall_lenth"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
*recall_len = atoi(json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "recall_start"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "recall_start"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
*recall_sta = atoi(json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "recall_dailytime"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "recall_dailytime"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
*recall_daily = atoi(json_node->valuestring);
|
||||
}
|
||||
@@ -600,51 +600,51 @@ void Read_Nacos_Param_Uds(char** uds_upload_url, char** uds_download_url, char**
|
||||
char* ptr = NULL;
|
||||
SendWebAPI_Nacos_Ptr("http://127.0.0.1:8091/powerQuality/getProperties", "uds", &ptr);
|
||||
int flag = 1;
|
||||
cJSON* json = cJSON_Parse(ptr); //json<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
|
||||
cJSON* json = cJSON_Parse(ptr); //json格式序列化
|
||||
cJSON* json_node;
|
||||
cJSON* json_param;
|
||||
if (json == NULL) {
|
||||
printf("nacos error %s\n", cJSON_GetErrorPtr());
|
||||
}
|
||||
else {
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "status"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "000000") != 0) {
|
||||
printf("status error :%s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json, "errors"); //获取result
|
||||
if (json_node == NULL || strcmp(json_node->valuestring, "success") != 0) {
|
||||
printf("errors get falie: %s\n", cJSON_GetErrorPtr());
|
||||
flag = 0;
|
||||
}
|
||||
if (flag) {
|
||||
printf("read nacos success\n");
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "udsUploadUrl"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_param = cJSON_GetObjectItem(json, "param"); //获取result
|
||||
json_node = cJSON_GetObjectItem(json_param, "udsUploadUrl"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*uds_upload_url != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*uds_upload_url);
|
||||
}
|
||||
*uds_upload_url = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*uds_upload_url = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*uds_upload_url, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "udsDownloadUrl"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "udsDownloadUrl"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*uds_download_url != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*uds_download_url);
|
||||
}
|
||||
*uds_download_url = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*uds_download_url = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*uds_download_url, json_node->valuestring);
|
||||
}
|
||||
json_node = cJSON_GetObjectItem(json_param, "UdsDeleteUrl"); //<EFBFBD><EFBFBD>ȡresult
|
||||
json_node = cJSON_GetObjectItem(json_param, "UdsDeleteUrl"); //获取result
|
||||
if (json_node && json_node->type == cJSON_String) {
|
||||
if (*uds_delete_url != NULL) {
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ棬<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
// 如果已经分配了内存,则释放内存
|
||||
free(*uds_delete_url);
|
||||
}
|
||||
*uds_delete_url = (char*)malloc(strlen(json_node->valuestring) + 1); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
*uds_delete_url = (char*)malloc(strlen(json_node->valuestring) + 1); // 分配内存
|
||||
strcpy(*uds_delete_url, json_node->valuestring);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ using namespace std;
|
||||
#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
|
||||
extern "C" {
|
||||
@@ -40,33 +40,33 @@ size_t req_reply_device(void* ptr, size_t size, size_t nmemb, void* stream)
|
||||
void SendWebAPI_Test(const string strUrl)
|
||||
{
|
||||
|
||||
// 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.c_str());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//设置post请求的参数
|
||||
cJSON* json_root = cJSON_CreateObject();
|
||||
cJSON* json_param = cJSON_CreateObject();
|
||||
|
||||
cJSON_AddItemToObject(json_root, "code", cJSON_CreateString("putObject"));
|
||||
cJSON_AddItemToObject(json_root, "param", json_param);
|
||||
//param<EFBFBD><EFBFBD>
|
||||
//param层
|
||||
cJSON_AddItemToObject(json_param, "object_name", cJSON_CreateString("comtrade/pq/Device.xml"));
|
||||
cJSON_AddItemToObject(json_param, "localfile_name", cJSON_CreateString("/FeProject/etc/Device_Config.xml"));
|
||||
|
||||
@@ -77,16 +77,16 @@ void SendWebAPI_Test(const string strUrl)
|
||||
//char* pszEncodeSecret = curl_easy_escape(curl, strclientsecret.c_str(), strclientsecret.length());
|
||||
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_device);
|
||||
|
||||
|
||||
@@ -95,14 +95,14 @@ void SendWebAPI_Test(const string strUrl)
|
||||
|
||||
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(">>>TestHuaweiyun Obs 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("Huaweiyun Obs failed res code: " );
|
||||
}
|
||||
@@ -128,32 +128,32 @@ void TestOBS()
|
||||
|
||||
void SendWebAPI(const string strUrl, char* localpath, char* cloudpath,const char* code)
|
||||
{
|
||||
// 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.c_str());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//设置post请求的参数
|
||||
cJSON* json_root = cJSON_CreateObject();
|
||||
cJSON* json_param = cJSON_CreateObject();
|
||||
cJSON_AddItemToObject(json_root, "code", cJSON_CreateString(code));
|
||||
cJSON_AddItemToObject(json_root, "param", json_param);
|
||||
//param<EFBFBD><EFBFBD>
|
||||
//param层
|
||||
cJSON_AddItemToObject(json_param, "object_name", cJSON_CreateString(cloudpath));
|
||||
cJSON_AddItemToObject(json_param, "localfile_name", cJSON_CreateString(localpath));
|
||||
|
||||
@@ -161,16 +161,16 @@ void SendWebAPI(const string strUrl, char* localpath, char* cloudpath,const char
|
||||
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_device);
|
||||
|
||||
|
||||
@@ -179,14 +179,14 @@ void SendWebAPI(const string strUrl, char* localpath, char* cloudpath,const char
|
||||
|
||||
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(">>>TestHuaweiyun Obs 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("Huaweiyun Obs failed res code: ");
|
||||
}
|
||||
@@ -212,32 +212,32 @@ void OBSFile(char* localpath,char* cloudpath,const char* code)
|
||||
|
||||
void SendWebAPI_del(const string strUrl, char* cloudpath, const char* code)
|
||||
{
|
||||
// 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.c_str());
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>post<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>
|
||||
//设置post请求的参数
|
||||
cJSON* json_root = cJSON_CreateObject();
|
||||
cJSON* json_param = cJSON_CreateObject();
|
||||
cJSON_AddItemToObject(json_root, "code", cJSON_CreateString(code));
|
||||
cJSON_AddItemToObject(json_root, "param", json_param);
|
||||
//param<EFBFBD><EFBFBD>
|
||||
//param层
|
||||
cJSON_AddItemToObject(json_param, "object_name", cJSON_CreateString(cloudpath));
|
||||
cJSON_AddNullToObject(json_param, "localfile_name");
|
||||
|
||||
@@ -246,16 +246,16 @@ void SendWebAPI_del(const string strUrl, char* cloudpath, const char* code)
|
||||
|
||||
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_device);
|
||||
|
||||
|
||||
@@ -264,14 +264,14 @@ void SendWebAPI_del(const string strUrl, char* cloudpath, const char* code)
|
||||
|
||||
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(">>>TestHuaweiyun Obs 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("Huaweiyun Obs failed res code: ");
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ void TestOSS()
|
||||
aos_pool_t *pool = NULL;
|
||||
apr_status_t ret;
|
||||
|
||||
/* <EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>aos_http_io_initialize<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硢<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>*/
|
||||
/* 在程序入口调用aos_http_io_initialize方法来初始化网络、内存等全局资源。*/
|
||||
printf(">>>TestOSS ini Start");
|
||||
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
|
||||
return;
|
||||
@@ -65,13 +65,13 @@ void TestOSS()
|
||||
return ;
|
||||
}
|
||||
|
||||
void PutOSS(char* File_Name,char* data) //zw<EFBFBD><EFBFBD> 2023-9-7 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>oss<EFBFBD>ļ<EFBFBD>
|
||||
void PutOSS(char* File_Name,char* data) //zw修改 2023-9-7 上送oss文件
|
||||
{
|
||||
apr_file_t* output = NULL;
|
||||
aos_pool_t* pool = NULL;
|
||||
apr_status_t ret;
|
||||
|
||||
/* <EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>aos_http_io_initialize<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硢<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>*/
|
||||
/* 在程序入口调用aos_http_io_initialize方法来初始化网络、内存等全局资源。*/
|
||||
printf(">>>PutOSS ini Start");
|
||||
printf(File_Name);
|
||||
printf(data);
|
||||
@@ -82,7 +82,7 @@ void PutOSS(char* File_Name,char* data) //zw
|
||||
|
||||
printf(">>>PutOSS put Start");
|
||||
|
||||
put_object_from_file_new(File_Name, data);//ʹ<EFBFBD><EFBFBD>buffer<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
put_object_from_file_new(File_Name, data);//使用buffer推送文件
|
||||
|
||||
printf(">>>PutOSS put End");
|
||||
|
||||
@@ -91,13 +91,13 @@ void PutOSS(char* File_Name,char* data) //zw
|
||||
return;
|
||||
}
|
||||
|
||||
void GetOSS(char* File_Name,char* savepath) //zw<EFBFBD><EFBFBD> 2023-9-7 <EFBFBD><EFBFBD>ȡoss<EFBFBD>ļ<EFBFBD>
|
||||
void GetOSS(char* File_Name,char* savepath) //zw修改 2023-9-7 获取oss文件
|
||||
{
|
||||
apr_file_t* output = NULL;
|
||||
aos_pool_t* pool = NULL;
|
||||
apr_status_t ret;
|
||||
|
||||
/* <EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>aos_http_io_initialize<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硢<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>*/
|
||||
/* 在程序入口调用aos_http_io_initialize方法来初始化网络、内存等全局资源。*/
|
||||
printf(">>>GetOSS ini Start");
|
||||
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
|
||||
return;
|
||||
@@ -105,7 +105,7 @@ void GetOSS(char* File_Name,char* savepath) //zw
|
||||
|
||||
printf(">>>GetOSS put Start");
|
||||
|
||||
get_object_to_file_new(File_Name,savepath);//ʹ<EFBFBD><EFBFBD>buffer<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
get_object_to_file_new(File_Name,savepath);//使用buffer推送文件
|
||||
|
||||
printf(">>>GetOSS put End");
|
||||
|
||||
@@ -120,7 +120,7 @@ void DelOSS(char* File_Name)
|
||||
aos_pool_t* pool = NULL;
|
||||
apr_status_t ret;
|
||||
|
||||
/* <EFBFBD>ڳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>aos_http_io_initialize<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硢<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>*/
|
||||
/* 在程序入口调用aos_http_io_initialize方法来初始化网络、内存等全局资源。*/
|
||||
printf(">>>DelOSS ini Start");
|
||||
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
|
||||
return;
|
||||
@@ -128,7 +128,7 @@ void DelOSS(char* File_Name)
|
||||
|
||||
printf(">>>DelOSS put Start");
|
||||
|
||||
delete_object_new(File_Name);//ʹ<EFBFBD><EFBFBD>buffer<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
delete_object_new(File_Name);//使用buffer推送文件
|
||||
|
||||
printf(">>>DelOSS put End");
|
||||
|
||||
@@ -194,7 +194,7 @@ void put_object_from_buffer()
|
||||
aos_pool_destroy(p);
|
||||
}
|
||||
|
||||
void put_object_from_buffer_new(char* File_Name,char* data)//zw<EFBFBD><EFBFBD> 2023-9-7 oss<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void put_object_from_buffer_new(char* File_Name,char* data)//zw修改 2023-9-7 oss推送
|
||||
{
|
||||
aos_pool_t* p = NULL;
|
||||
aos_string_t bucket;
|
||||
@@ -237,7 +237,7 @@ void put_object_from_file()
|
||||
aos_pool_t *p = NULL;
|
||||
aos_string_t bucket;
|
||||
aos_string_t object;
|
||||
/* <EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>CNAME<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʹ<EFBFBD>á<EFBFBD>*/
|
||||
/* 是否使用了CNAME。0表示不使用。*/
|
||||
int is_cname = 0;
|
||||
aos_table_t *headers = NULL;
|
||||
aos_table_t *resp_headers = NULL;
|
||||
@@ -246,9 +246,9 @@ void put_object_from_file()
|
||||
aos_status_t *s = NULL;
|
||||
aos_string_t file;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>أ<EFBFBD>pool<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>apr_pool_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>apr<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>*/
|
||||
/* 用于内存管理的内存池(pool),等价于apr_pool_t。其实现代码在apr库中。*/
|
||||
aos_pool_create(&p, NULL);
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>options<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>endpoint<EFBFBD><EFBFBD>access_key_id<EFBFBD><EFBFBD>acces_key_secret<EFBFBD><EFBFBD>is_cname<EFBFBD><EFBFBD>curl<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>*/
|
||||
/* 创建并初始化options,该参数包括endpoint、access_key_id、acces_key_secret、is_cname、curl等全局配置信息。*/
|
||||
options = oss_request_options_create(p);
|
||||
init_sample_request_options(options, is_cname);
|
||||
aos_str_set(&bucket, BUCKET_NAME);
|
||||
@@ -274,7 +274,7 @@ void put_object_from_file_new(char* File_Name, char* path)
|
||||
aos_pool_t* p = NULL;
|
||||
aos_string_t bucket;
|
||||
aos_string_t object;
|
||||
/* <EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>CNAME<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>ʹ<EFBFBD>á<EFBFBD>*/
|
||||
/* 是否使用了CNAME。0表示不使用。*/
|
||||
int is_cname = 0;
|
||||
aos_table_t* headers = NULL;
|
||||
aos_table_t* resp_headers = NULL;
|
||||
@@ -283,9 +283,9 @@ void put_object_from_file_new(char* File_Name, char* path)
|
||||
aos_status_t* s = NULL;
|
||||
aos_string_t file;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>أ<EFBFBD>pool<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD>apr_pool_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>apr<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>*/
|
||||
/* 用于内存管理的内存池(pool),等价于apr_pool_t。其实现代码在apr库中。*/
|
||||
aos_pool_create(&p, NULL);
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>options<EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>endpoint<EFBFBD><EFBFBD>access_key_id<EFBFBD><EFBFBD>acces_key_secret<EFBFBD><EFBFBD>is_cname<EFBFBD><EFBFBD>curl<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>*/
|
||||
/* 创建并初始化options,该参数包括endpoint、access_key_id、acces_key_secret、is_cname、curl等全局配置信息。*/
|
||||
options = oss_request_options_create(p);
|
||||
init_sample_request_options(options, is_cname);
|
||||
aos_str_set(&bucket, BUCKET_NAME);
|
||||
|
||||
@@ -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-Type为multipart/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);
|
||||
|
||||
Reference in New Issue
Block a user