| @ -0,0 +1,86 @@ | |||||
| #include <json/json.h> | |||||
| #include <curl/curl.h> | |||||
| // 函数:获取精度信息 | |||||
| std::map<std::string, std::string> getPrecisions(const std::string& platform) { | |||||
| std::map<std::string, std::string> precisions; | |||||
| CURL* curl; | |||||
| CURLcode res; | |||||
| std::string response; | |||||
| curl_global_init(CURL_GLOBAL_DEFAULT); | |||||
| curl = curl_easy_init(); | |||||
| if (curl) { | |||||
| // 定义请求 URL | |||||
| std::string url = "http://43.133.213.20:8001/api/v1/PrecisionInfo/platform"; | |||||
| // 定义请求数据 | |||||
| std::string query = "platform=" + platform; | |||||
| // 设置 CURL 选项 | |||||
| curl_easy_setopt(curl, CURLOPT_URL, (url + "?" + query).c_str()); | |||||
| curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); | |||||
| curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); | |||||
| curl_easy_setopt(curl, CURLOPT_TIMEOUT, 15L); // 设置超时时间为15秒 | |||||
| // 执行请求 | |||||
| res = curl_easy_perform(curl); | |||||
| if (res != CURLE_OK) { | |||||
| std::cerr << "getPrecisions failed: " << curl_easy_strerror(res) << std::endl; | |||||
| } else { | |||||
| Json::Value jsonData; | |||||
| Json::CharReaderBuilder readerBuilder; | |||||
| std::string errs; | |||||
| std::istringstream responseStream(response); | |||||
| if (Json::parseFromStream(readerBuilder, responseStream, &jsonData, &errs)) { | |||||
| for (const auto& key : jsonData.getMemberNames()) { | |||||
| // std::cout << key << ": " << jsonData[key] << std::endl; | |||||
| precisions[key] = jsonData[key].toStyledString(); | |||||
| } | |||||
| } else { | |||||
| std::cerr << "解析 JSON 失败: " << errs << std::endl; | |||||
| } | |||||
| } | |||||
| // 清理 | |||||
| curl_easy_cleanup(curl); | |||||
| } | |||||
| curl_global_cleanup(); | |||||
| return precisions; | |||||
| } | |||||
| // 调用示例 | |||||
| std::map<std::string, std::string> precisions = getPrecisions(platform); | |||||
| // 打印解析后的结果(如果解析了的话) | |||||
| for (const auto& kv : precisions) { | |||||
| if (kv.first == GateSwapUSymbolLower) { | |||||
| std::cout << kv.first << ": " << kv.second << std::endl; | |||||
| Json::Value jsonData; | |||||
| Json::CharReaderBuilder readerBuilder; | |||||
| std::string errs; | |||||
| std::istringstream responseStream(kv.second); | |||||
| if (Json::parseFromStream(readerBuilder, responseStream, &jsonData, &errs)) { | |||||
| double min_size = jsonData["min_size"].asDouble(); | |||||
| double min_value = jsonData["min_value"].asDouble(); | |||||
| double price_decimal = jsonData["price_decimal"].asDouble(); | |||||
| int price_precision = jsonData["price_precision"].asInt(); | |||||
| int real_size_precision = jsonData["real_size_precision"].asInt(); | |||||
| GateSwapUsize_decimal = jsonData["size_decimal"].asDouble(); | |||||
| int size_precision = jsonData["size_precision"].asInt(); | |||||
| std::cout << "min_size: " << min_size << std::endl; | |||||
| std::cout << "min_value: " << min_value << std::endl; | |||||
| std::cout << "price_decimal: " << price_decimal << std::endl; | |||||
| std::cout << "price_precision: " << price_precision << std::endl; | |||||
| std::cout << "real_size_precision: " << real_size_precision << std::endl; | |||||
| std::cout << "GateSwapUsize_decimal: " << GateSwapUsize_decimal << std::endl; | |||||
| std::cout << "size_precision: " << size_precision << std::endl; | |||||
| } else { | |||||
| std::cerr << "解析 JSON 失败: " << errs << std::endl; | |||||
| } | |||||
| } | |||||
| } | |||||