#include "WebAPIBase.h" #include "spdlog/spdlog.h" WebAPIBase::~WebAPIBase() { if(m_httpApi != nullptr) { delete m_httpApi; m_httpApi = nullptr; } } /* 初始化WebApi */ bool WebAPIBase::initWebApi(const QString& url,const QString& serID, const QString appType, const QString& serverIP) { if(m_httpApi == nullptr) { m_httpApi = new lhhttpapi; } if(!m_httpApi->Load()) { SPDLOG_ERROR("Load WebAPI failed"); return false; } SPDLOG_DEBUG("URL: {}", url.toStdString()); SPDLOG_DEBUG("ServerID: {}", serID.toStdString()); SPDLOG_DEBUG("ServerKey: {}", appType.toStdString()); void* pHttp = nullptr; int i = 0; for(i = 0; i < 3; i++) { pHttp = m_httpApi->DBInit(url.toStdString().c_str(), true); if(pHttp != nullptr) { break; } SPDLOG_ERROR("设置WebAPI地址失败: {}", m_httpApi->DoGetLastError(&i).toStdString()); } if(i >= 3) { SPDLOG_ERROR("WebAPI设置地址错误!"); return false; } int ret = 0; #ifdef QT_DEBUG /* 获取服务器列表 */ // char serverList[8192]={0}; // ret = m_httpApi->DBGetServerList(serverList, 8192-1); // if(ret != 0) // { // SPDLOG_LOGGER_ERROR(m_logger, "Get server list failed: {}, error info: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); // return false; // } // SPDLOG_LOGGER_INFO(m_logger, QString("\nGet server list success:%1").arg(serverList)); #endif /* 登录,第二个参数是限制的服务 */ for(i = 0; i < 3; i++) { ret = m_httpApi->DBLogin("", serID, appType, m_userToken, true, pHttp); if(ret == 0) { break; } SPDLOG_ERROR("Login failed: {}, error info: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString()); /* 登录失败,等待一段时间 */ QThread::msleep(200); } if(i >= 3) { SPDLOG_ERROR("登陆WebAPI失败!"); return false; } SPDLOG_INFO("WebAPI Login success!"); return true; } /** * @brief 将json的key转换成小写,这种转换不会转值中嵌套的json * * @param json * @param result * @return true * @return false */ bool WebAPIBase::convertJsonKeyToLower(const nJson& json, nJson& result) { for(auto& it : json.items()) { std::string key = it.key(); std::transform(key.begin(), key.end(), key.begin(), ::tolower); // 转换成小写 /* 是object */ if(it.value().is_object()) { convertJsonKeyToLower(it.value(), result[key]); // 递归处理嵌套的对象 } /* 是array */ else if(it.value().is_array()) { nJson arrayResult = nJson::array(); for(auto& item : it.value()) { if(item.is_object()) { /* 如果是对象,递归转换 */ nJson itemJson = nJson::object(); convertJsonKeyToLower(item, itemJson); /* 将转换后的对象添加到数组中 */ arrayResult.push_back(itemJson); } else { arrayResult.push_back(item); } } result[key] = arrayResult; } else { /* 直接赋值非对象和非数组类型 */ result[key] = it.value(); } } return true; }