将以下python代码改写成C++版本不使用binance的头文件:#!usrbinenv pythonimport loggingfrom binanceum_futures import UMFuturesfrom binancelibutils import config_loggingfrom binanceerror import ClientErrorconfig_logginglog
#include
using namespace std;
const string API_SECRET = "Your API Secret"; const string API_KEY = "Your API Key";
string hmac_sha256(string key, string data) { unsigned char* digest = HMAC(EVP_sha256(), key.c_str(), key.size(), (unsigned char*)data.c_str(), data.size(), NULL, NULL); char mdString[65]; for(int i = 0; i < 32; i++) { sprintf(&mdString[i*2], "%02x", (unsigned int)digest[i]); } mdString[64] = '\0'; return string(mdString); }
string getTimestamp() { time_t now = time(NULL); char buffer[20]; strftime(buffer, 20, "%FT%T", gmtime(&now)); return string(buffer); }
string generateSignature(map<string, string> params) { string payload = ""; for(auto it = params.begin(); it != params.end(); it++) { payload += it->first + "=" + it->second + "&"; } payload = payload.substr(0, payload.size() - 1); string signature = hmac_sha256(API_SECRET, payload); return signature; }
string sendRequest(string url, map<string, string> params) { CURL *curl; CURLcode res; string response = ""; string payload = ""; for(auto it = params.begin(); it != params.end(); it++) { payload += it->first + "=" + it->second + "&"; } payload = payload.substr(0, payload.size() - 1); url += "?" + payload; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, [](void *ptr, size_t size, size_t nmemb, string stream) { stream->append((char)ptr, size * nmemb); return size * nmemb; }); res = curl_easy_perform(curl); if(res != CURLE_OK) { cerr << "Failed to send request: " << curl_easy_strerror(res) << endl; } curl_easy_cleanup(curl); } return response; }
int main() { map<string, string> params; params["timestamp"] = getTimestamp(); params["recvWindow"] = "6000"; params["signature"] = generateSignature(params); params["apiKey"] = API_KEY; string url = "https://fapi.binance.com/fapi/v2/account"; string response = sendRequest(url, params); cout << response << endl; return 0;
原文地址: https://www.cveoy.top/t/topic/cxVV 著作权归作者所有。请勿转载和采集!