Kaynağa Gözat

#IQRV #comment [Resful] 接口优化暂存

gifur 3 yıl önce
ebeveyn
işleme
3ac133c82e

+ 17 - 3
Other/libRestfulFunc/RestfulFunc.h

@@ -84,9 +84,15 @@ struct HttpClientRequestConfig
     /*
     * Start with "http://" or "https://"
     */
-    HttpClientRequestConfig(const std::string& uri) :mMethod(HttpRequestMethod::GET), mUri(uri) {}
-    HttpClientRequestConfig(HttpRequestMethod method) : mMethod(method) {}
-    HttpClientRequestConfig(HttpRequestMethod method, const std::string& uri) :mMethod(method), mUri(uri) {}
+    HttpClientRequestConfig(const std::string& uri) :mMethod(HttpRequestMethod::GET), mUri(uri), mToValidCert(false)
+    {
+    }
+    HttpClientRequestConfig(HttpRequestMethod method) : mMethod(method), mToValidCert(false)
+    {
+    }
+    HttpClientRequestConfig(HttpRequestMethod method, const std::string& uri) :mMethod(method), mUri(uri), mToValidCert(false)
+    {
+    }
 
     void SetRequestType(HttpRequestMethod method) { mMethod = method; }
     void SetUri(const std::string& uri) { mUri = uri; }
@@ -102,6 +108,8 @@ struct HttpClientRequestConfig
 
     HttpRequestMethod GetType() const { return mMethod; }
 
+    bool NeedValidCert() const { return mToValidCert; }
+
 private:
 
     HttpRequestMethod mMethod;
@@ -109,12 +117,18 @@ private:
     std::string mSubUri;
 
     std::map<std::string, std::string> mQueryPairs;
+
+    bool mToValidCert;
 };
 
 struct HttpClientResponseResult
 {
     int statusCode;
     std::string content;
+    /**  子类继承实现 */
+    virtual bool ConsiderAsSucc() const {
+        return (statusCode == 200);
+    }
 };
 
 class RESTFULFUNC_API RestfulClient

+ 2 - 2
Other/libRestfulFunc/RestfulFuncImpl.cpp

@@ -66,7 +66,7 @@ namespace
 void RestfulClient::Do(const HttpClientRequestConfig& requestConfig, HttpClientResponseResult& result)
 {
     http_client_config config;
-    config.set_validate_certificates(false);
+    config.set_validate_certificates(requestConfig.NeedValidCert());
 
     web::http::client::http_client client(requestConfig.GetBaseUri(), config);
 
@@ -85,7 +85,7 @@ void RestfulClient::Do(const HttpClientRequestConfig& requestConfig, HttpClientR
     pplx::task<void> requestTask = client.request(request)
      .then([&result](http_response response) ->pplx::task<json::value> {
         result.statusCode = response.status_code();
-        if (response.status_code() == status_codes::OK) {
+        if (result.ConsiderAsSucc()) {
             return response.extract_json();
         } else {
             std::cout << "response status rsult: " << response.status_code() << std::endl;