Преглед на файлове

#IQRV #comment [HttpRest] 完成Post功能的实现

gifur преди 3 години
родител
ревизия
f44b055df1
променени са 3 файла, в които са добавени 47 реда и са изтрити 3 реда
  1. 17 3
      Other/libRestfulFunc/RestfulFunc.h
  2. 5 0
      Other/libRestfulFunc/RestfulFuncImpl.cpp
  3. 25 0
      Other/libRestfulFunc/test/testNormlReqAns.cpp

+ 17 - 3
Other/libRestfulFunc/RestfulFunc.h

@@ -88,15 +88,15 @@ struct HttpClientRequestConfig
      * @return : 
      */
     HttpClientRequestConfig(const std::string& uri) 
-        :mMethod(HttpRequestMethod::GET), mUri(uri), mToValidCert(false)
+        :mMethod(HttpRequestMethod::GET), mUri(uri), mToValidCert(false), mBodyContent(""), mTimeoutSecs(0)
     {
     }
     HttpClientRequestConfig(HttpRequestMethod method)
-        : mMethod(method), mToValidCert(false)
+        : mMethod(method), mToValidCert(false), mBodyContent(""), mTimeoutSecs(0)
     {
     }
     HttpClientRequestConfig(HttpRequestMethod method, const std::string& uri) 
-        :mMethod(method), mUri(uri), mToValidCert(false)
+        :mMethod(method), mUri(uri), mToValidCert(false), mBodyContent(""), mTimeoutSecs(0)
     {
     }
 
@@ -118,15 +118,29 @@ struct HttpClientRequestConfig
 
     bool NeedValidCert() const { return mToValidCert; }
 
+    void SetJsonBody(const std::string& value) { mBodyContent = value; }
+    virtual std::string GetJsonBody() const { return mBodyContent; }
+
+    void SetTimeout(uint32_t timeoutSecs) { mTimeoutSecs = timeoutSecs; }
+    uint32_t GetTimeout() const { return mTimeoutSecs; }
+
 private:
 
     HttpRequestMethod mMethod;
     std::string mUri;
     std::string mSubUri;
+    std::string mBodyContent;
 
     std::map<std::string, std::string> mQueryPairs;
 
     bool mToValidCert;
+    uint32_t mTimeoutSecs;
+};
+
+
+struct HttpClientPostTypeRequest : public HttpClientRequestConfig
+{
+    HttpClientPostTypeRequest(const std::string& uri) :HttpClientRequestConfig(HttpRequestMethod::POST, uri) {}
 };
 
 struct HttpClientResponseResult

+ 5 - 0
Other/libRestfulFunc/RestfulFuncImpl.cpp

@@ -69,6 +69,10 @@ void RestfulClient::Do(const HttpClientRequestConfig& requestConfig, HttpClientR
 {
     http_client_config config;
     config.set_validate_certificates(requestConfig.NeedValidCert());
+    const uint32_t timeoutVal = requestConfig.GetTimeout();
+    if (timeoutVal != 0) {
+        config.set_timeout(utility::seconds(timeoutVal));
+    }
 
     web::http::client::http_client client(requestConfig.GetBaseUri(), config);
 
@@ -83,6 +87,7 @@ void RestfulClient::Do(const HttpClientRequestConfig& requestConfig, HttpClientR
     request.set_request_uri(urib.to_string());
 
     request.headers().add(header_names::accept, "application/json");
+    request.set_body(requestConfig.GetJsonBody(), "application/json");
 
     pplx::task<void> requestTask = client.request(request)
      .then([&result](http_response response) ->pplx::task<json::value> {

+ 25 - 0
Other/libRestfulFunc/test/testNormlReqAns.cpp

@@ -13,5 +13,30 @@ TEST_CASE("test api manage", "[restful]")
     REQUIRE(!result.content.empty());
 }
 
+TEST_CASE("test  api stage get api", "[restful]")
+{
+    HttpClientRequestConfig config("https://rvcterminal.paasst.cmbchina.cn");
+    HttpClientResponseResult result;
+    config.SetChildUri("/api/stage");
+    config.AppendQuery("terminalNo", "7555980001");
+    RestfulClient client = RestfulClient::getInstance();
+    client.Do(config, result);
+    std::cout << result.content << std::endl;
+    REQUIRE(!result.content.empty());
+}
+
+TEST_CASE("test  api stage post api", "[restful]")
+{
+    HttpClientRequestConfig config("https://rvcterminal.paasst.cmbchina.cn");
+    config.SetRequestType(HttpRequestMethod::POST);
+    config.SetChildUri("/api/stage");
+    config.SetJsonBody("{\"terminalNo\":\"7555980001\", \"errEntityList\":\"566666\"}");
+    RestfulClient client = RestfulClient::getInstance();
+    HttpClientResponseResult result;
+    client.Do(config, result);
+    std::cout << result.content << std::endl;
+    REQUIRE(!result.content.empty());
+}
+