From ee91c28732a651bd0b51a15269f56adc8fa0ab1e Mon Sep 17 00:00:00 2001 From: wb-hx510875 Date: Mon, 19 Oct 2020 11:33:33 +0800 Subject: [PATCH] fix: set http body with body parameters --- core/src/RoaServiceClient.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/src/RoaServiceClient.cc b/core/src/RoaServiceClient.cc index e0540e1ba..020c9bbb3 100644 --- a/core/src/RoaServiceClient.cc +++ b/core/src/RoaServiceClient.cc @@ -131,9 +131,19 @@ RoaServiceClient::buildHttpRequest(const std::string &endpoint, } else { if (msg.parameter("Content-Type").empty()) { request.setHeader("Content-Type", "application/x-www-form-urlencoded"); + auto body_params = msg.bodyParameters(); + std::stringstream sbody; + for (const auto &p : body_params) { + sbody << "&" << p.first << "=" << UrlEncode(p.second); + } + request.setBody(sbody.str().c_str(), sbody.str().size()); + request.setHeader("Content-Length", std::to_string(request.bodySize())); + request.setHeader("Content-MD5", + ComputeContentMD5(request.body(), request.bodySize())); + } else { + request.setHeader("Content-MD5", + ComputeContentMD5(msg.content(), msg.contentSize())); } - request.setHeader("Content-MD5", - ComputeContentMD5(msg.content(), msg.contentSize())); } std::time_t t = std::time(nullptr);