Procházet zdrojové kódy

fix: set http body with body parameters

wb-hx510875 před 6 roky
rodič
revize
ee91c28732
1 změnil soubory, kde provedl 12 přidání a 2 odebrání
  1. 12 2
      core/src/RoaServiceClient.cc

+ 12 - 2
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);