|
|
@@ -22,6 +22,7 @@
|
|
|
|
|
|
#include <string>
|
|
|
#include <map>
|
|
|
+#include <vector>
|
|
|
|
|
|
/*
|
|
|
* > 0 : 网站返回的错误码,比如 200,404 等
|
|
|
@@ -52,7 +53,9 @@ enum HttpRequestMethod
|
|
|
TRCE,
|
|
|
CONNECT,
|
|
|
MERGE,
|
|
|
- PATCH
|
|
|
+ PATCH,
|
|
|
+ UPLOAD,
|
|
|
+ DOWNLOAD
|
|
|
};
|
|
|
|
|
|
enum HttpStatusCode : int
|
|
|
@@ -88,15 +91,16 @@ struct HttpClientRequestConfig
|
|
|
* @return :
|
|
|
*/
|
|
|
HttpClientRequestConfig(const std::string& uri)
|
|
|
- :mMethod(HttpRequestMethod::GET), mUri(uri), mToValidCert(false), mBodyContent(""), mTimeoutSecs(0)
|
|
|
+ :mMethod(HttpRequestMethod::GET), mUri(uri), mToValidCert(false)
|
|
|
+ , mBodyContent(""), mContentType(""), mTimeoutSecs(0)
|
|
|
{
|
|
|
}
|
|
|
HttpClientRequestConfig(HttpRequestMethod method)
|
|
|
- : mMethod(method), mToValidCert(false), mBodyContent(""), mTimeoutSecs(0)
|
|
|
+ : mMethod(method), mToValidCert(false), mBodyContent(""), mContentType(""), mTimeoutSecs(0)
|
|
|
{
|
|
|
}
|
|
|
HttpClientRequestConfig(HttpRequestMethod method, const std::string& uri)
|
|
|
- :mMethod(method), mUri(uri), mToValidCert(false), mBodyContent(""), mTimeoutSecs(0)
|
|
|
+ :mMethod(method), mUri(uri), mToValidCert(false), mBodyContent(""), mContentType(""), mTimeoutSecs(0)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
@@ -107,19 +111,43 @@ struct HttpClientRequestConfig
|
|
|
void AppendQuery(const std::string& name, const std::string& value) {
|
|
|
mQueryPairs[name] = value;
|
|
|
}
|
|
|
- void ResetQuery() { mQueryPairs.clear(); }
|
|
|
|
|
|
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; }
|
|
|
|
|
|
+ void ResetQuery() { mQueryPairs.clear(); }
|
|
|
+ const std::map<std::string, std::string>& GetQueryPairs() const { return mQueryPairs; }
|
|
|
+
|
|
|
+ void ClearPararm() { mParams.clear(); }
|
|
|
+ void AddParams(const std::string& name, const std::string& value) {
|
|
|
+ mParams.push_back(std::move(std::pair<std::string, std::string>(name, value)));
|
|
|
+ }
|
|
|
+ void SetDefaultParam(const std::string& value) {
|
|
|
+ AddParams("params", value);
|
|
|
+ }
|
|
|
+
|
|
|
+ void ClearFiles() { mFiles.clear(); }
|
|
|
+ void AddFiles(const std::string& filePath) {
|
|
|
+ mFiles.push_back(std::move(std::pair<std::string, std::string>("file_content", filePath)));
|
|
|
+ }
|
|
|
+ std::pair<std::string, std::string> BuildBodyContent() const;
|
|
|
+
|
|
|
HttpRequestMethod GetType() const { return mMethod; }
|
|
|
|
|
|
bool NeedValidCert() const { return mToValidCert; }
|
|
|
|
|
|
- void SetJsonBody(const std::string& value) { mBodyContent = value; }
|
|
|
- virtual std::string GetJsonBody() const { return mBodyContent; }
|
|
|
+ void SetJsonBody(const std::string& value) {
|
|
|
+ SetBodyContent(value, "application/json");
|
|
|
+ }
|
|
|
+
|
|
|
+ void SetBodyContent(const std::string& value, const std::string& type) {
|
|
|
+ mBodyContent = value;
|
|
|
+ mContentType = type;
|
|
|
+ }
|
|
|
+
|
|
|
+ virtual std::string GetBodyContent() const { return mBodyContent; }
|
|
|
+ virtual std::string GetContentType() const { return mContentType; }
|
|
|
|
|
|
void SetTimeout(uint32_t timeoutSecs) { mTimeoutSecs = timeoutSecs; }
|
|
|
uint32_t GetTimeout() const { return mTimeoutSecs; }
|
|
|
@@ -130,8 +158,11 @@ private:
|
|
|
std::string mUri;
|
|
|
std::string mSubUri;
|
|
|
std::string mBodyContent;
|
|
|
+ std::string mContentType;
|
|
|
|
|
|
std::map<std::string, std::string> mQueryPairs;
|
|
|
+ std::vector<std::pair<std::string, std::string> > mParams;
|
|
|
+ std::vector<std::pair<std::string, std::string> > mFiles;
|
|
|
|
|
|
bool mToValidCert;
|
|
|
uint32_t mTimeoutSecs;
|
|
|
@@ -143,6 +174,12 @@ struct HttpClientPostTypeRequest : public HttpClientRequestConfig
|
|
|
HttpClientPostTypeRequest(const std::string& uri) :HttpClientRequestConfig(HttpRequestMethod::POST, uri) {}
|
|
|
};
|
|
|
|
|
|
+struct HttpClientDownloadRequest : public HttpClientRequestConfig
|
|
|
+{
|
|
|
+ HttpClientDownloadRequest(const std::string& uri) :HttpClientRequestConfig(HttpRequestMethod::POST, uri) {}
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
struct HttpClientResponseResult
|
|
|
{
|
|
|
int statusCode;
|