The source code here is the same as the C# version in the previous post. The client makes a simple call like that:
std::string value2 = "azertyuiopqsdfghjklmwxcvbn"; std::string buffer = Base64Helper::base64_encode((const unsigned char*)value2.c_str(), value2.length()); std::wstring value3(buffer.begin(), buffer.end()); SetData(key, value3, value3.length(), dbname);
Here is the wrapper code for SetData. It’s included in HttpLMDB dll:
bool HTTPLMDB_API SetData(std::wstring key, std::wstring valueb64, DWORD dwLen, std::wstring name) { std::wstring port = Constants::MasterNodePort; std::wstring ip = ServerHelper::GetIP(); std::wstring url = ServerHelper::BuildURL(ip, port); std::wstring contentType = _T("Content-Type"); std::wstring contentTypeV = _T("application/json"); std::wstring keepAlive = _T("Keep-Alive"); std::wstring keepAliveV = _T("false"); std::wstring contentLength = _T("Content-Length"); std::wostringstream bufLen; bufLen << contentType.length() + contentTypeV.length() + keepAlive.length() + keepAliveV.length() + contentLength.length() + 4; std::wstring len = bufLen.str().c_str(); std::wostringstream buf; buf << url << '/' << Constants::Request << Constants::VerbSetDataB64 << _T("&name=") << name; url = buf.str().c_str(); //{"key":"key_toto0","value":"value_toto0"} std::wostringstream bufjson; bufjson << "{" << '"' << "key" << '"' << ":" << '"' << key << '"' << "," << '"' << "value" << '"' << ":" << '"' << valueb64 << '"' << '}'; std::wstring jsonv = bufjson.str().c_str(); //wcout << _T("jsonv : ") << jsonv << endl; http_client client_lmdb(url); http_request request(methods::POST); request.headers().add(contentType, contentTypeV); request.headers().add(keepAlive, keepAliveV); request.headers().add(contentLength, len); request.set_body(jsonv); http_response response; response = client_lmdb.request(request).get(); wcout << response.to_string() << endl; return true; }
Here is the code. It’s not very difficult.
Leave a Reply