Procházet zdrojové kódy

#IQBX #comment [Other][RestFunc] 添加支持URL的参数

gifur před 3 roky
rodič
revize
274460b3fe

+ 6 - 1
Other/libRestfulFunc/RestfulFunc.h

@@ -21,6 +21,7 @@
 #endif
 
 #include <string>
+#include <map>
 
 /*
 * > 0 : 网站返回的错误码,比如 200,404 等
@@ -89,10 +90,13 @@ struct HttpClientRequestConfig
     void SetRequestType(HttpRequestMethod method) { mMethod = method; }
     void SetUri(const std::string& uri) { mUri = uri; }
     void SetChildUri(const std::string& subUri) { mSubUri = subUri; }
+    void AppendQuery(const std::string& name, const std::string& value) {
+        mQueryPairs[name] = value;
+    }
 
     std::string GetBaseUri() const { return mUri; }
     std::string GetSubUri() const { return mSubUri; }
-
+    const std::map<std::string, std::string>& GetQueryPairs() const { return mQueryPairs; }
     std::string GetRequestUri() const { return mUri + mSubUri; }
 
     HttpRequestMethod GetType() const { return mMethod; }
@@ -103,6 +107,7 @@ private:
     std::string mUri;
     std::string mSubUri;
 
+    std::map<std::string, std::string> mQueryPairs;
 };
 
 struct HttpClientResponseResult

+ 6 - 0
Other/libRestfulFunc/RestfulFuncImpl.cpp

@@ -72,6 +72,12 @@ void RestfulClient::Do(const HttpClientRequestConfig& requestConfig, HttpClientR
 
     http_request request(MappingHttpRequestMethod(requestConfig.GetType()));
     uri_builder urib(requestConfig.GetSubUri());
+    if (requestConfig.GetQueryPairs().size() > 0) {
+        const auto& queries = requestConfig.GetQueryPairs();
+        for (auto it = queries.cbegin(); it != queries.cend(); ++it) {
+            urib.append_query(it->first, it->second);
+        }
+    }
     request.set_request_uri(urib.to_string());
 
     request.headers().add(header_names::accept, "application/json");