diff --git a/core/include/alibabacloud/core/RoaServiceClient.h b/core/include/alibabacloud/core/RoaServiceClient.h index 9441a721b..9896aed59 100644 --- a/core/include/alibabacloud/core/RoaServiceClient.h +++ b/core/include/alibabacloud/core/RoaServiceClient.h @@ -40,13 +40,12 @@ class ALIBABACLOUD_CORE_EXPORT RoaServiceClient : public CoreClient { virtual ~RoaServiceClient(); protected: - JsonOutcome makeRequest(const std::string &endpoint, - const RoaServiceRequest &msg, HttpRequest::Method method = - HttpRequest::Method::Get)const; - HttpRequest buildHttpRequest(const std::string & endpoint, - const ServiceRequest &msg, HttpRequest::Method method)const override; - HttpRequest buildHttpRequest(const std::string & endpoint, - const RoaServiceRequest &msg, HttpRequest::Method method)const; + JsonOutcome makeRequest(const std::string &endpoint, + const RoaServiceRequest &msg, HttpRequest::Method method = HttpRequest::Method::Get) const; + HttpRequest buildHttpRequest(const std::string &endpoint, + const ServiceRequest &msg, HttpRequest::Method method) const override; + HttpRequest buildHttpRequest(const std::string &endpoint, + const RoaServiceRequest &msg, HttpRequest::Method method) const; private: std::shared_ptr credentialsProvider_; diff --git a/core/include/alibabacloud/core/RoaServiceRequest.h b/core/include/alibabacloud/core/RoaServiceRequest.h index 3d9cb2aff..33d29e2f7 100644 --- a/core/include/alibabacloud/core/RoaServiceRequest.h +++ b/core/include/alibabacloud/core/RoaServiceRequest.h @@ -30,6 +30,7 @@ class ALIBABACLOUD_CORE_EXPORT RoaServiceRequest : public ServiceRequest { using ServiceRequest::parameter; using ServiceRequest::setScheme; using ServiceRequest::setResourcePath; + using ServiceRequest::setMethod; }; } // namespace AlibabaCloud #endif // CORE_INCLUDE_ALIBABACLOUD_CORE_ROASERVICEREQUEST_H_ diff --git a/core/include/alibabacloud/core/RpcServiceClient.h b/core/include/alibabacloud/core/RpcServiceClient.h index c3e0aeda3..54912aa7d 100644 --- a/core/include/alibabacloud/core/RpcServiceClient.h +++ b/core/include/alibabacloud/core/RpcServiceClient.h @@ -48,13 +48,12 @@ class ALIBABACLOUD_CORE_EXPORT RpcServiceClient : public CoreClient { using CoreClient::AttemptRequest; protected: - virtual JsonOutcome makeRequest(const std::string &endpoint, - const RpcServiceRequest &msg, HttpRequest::Method method = - HttpRequest::Method::Get) const; - HttpRequest buildHttpRequest(const std::string & endpoint, - const ServiceRequest &msg, HttpRequest::Method method)const override; - HttpRequest buildHttpRequest(const std::string & endpoint, - const RpcServiceRequest &msg, HttpRequest::Method method)const; + virtual JsonOutcome makeRequest(const std::string &endpoint, + const RpcServiceRequest &msg, HttpRequest::Method method = HttpRequest::Method::Get) const; + HttpRequest buildHttpRequest(const std::string &endpoint, + const ServiceRequest &msg, HttpRequest::Method method) const override; + HttpRequest buildHttpRequest(const std::string &endpoint, + const RpcServiceRequest &msg, HttpRequest::Method method) const; private: std::shared_ptr credentialsProvider_; diff --git a/core/include/alibabacloud/core/RpcServiceRequest.h b/core/include/alibabacloud/core/RpcServiceRequest.h index b28065689..2ea370db4 100644 --- a/core/include/alibabacloud/core/RpcServiceRequest.h +++ b/core/include/alibabacloud/core/RpcServiceRequest.h @@ -28,9 +28,10 @@ class ALIBABACLOUD_CORE_EXPORT RpcServiceRequest : public ServiceRequest { virtual ~RpcServiceRequest(); std::string actionName()const; + using ServiceRequest::setMethod; using ServiceRequest::setScheme; - protected: +protected: void setActionName(const std::string &name); }; } // namespace AlibabaCloud diff --git a/core/include/alibabacloud/core/ServiceRequest.h b/core/include/alibabacloud/core/ServiceRequest.h index 42f8e2b82..58c9bf2b4 100644 --- a/core/include/alibabacloud/core/ServiceRequest.h +++ b/core/include/alibabacloud/core/ServiceRequest.h @@ -21,6 +21,7 @@ #include "Url.h" #include #include +#include "HttpRequest.h" namespace AlibabaCloud { class ALIBABACLOUD_CORE_EXPORT ServiceRequest { @@ -39,10 +40,12 @@ public: std::string resourcePath() const; std::string version() const; std::string scheme() const; + HttpRequest::Method method() const; long connectTimeout() const; long readTimeout() const; void setConnectTimeout(const long connectTimeout); void setReadTimeout(const long readTimeout); + void setMethod(const HttpRequest::Method method); protected: ServiceRequest(const std::string &product, const std::string &version); @@ -80,6 +83,7 @@ private: std::string scheme_; long connectTimeout_; long readTimeout_; + HttpRequest::Method method_; }; } // namespace AlibabaCloud diff --git a/core/src/RoaServiceClient.cc b/core/src/RoaServiceClient.cc index 8be1f0ed2..8ffe72df0 100644 --- a/core/src/RoaServiceClient.cc +++ b/core/src/RoaServiceClient.cc @@ -37,9 +37,10 @@ RoaServiceClient::~RoaServiceClient() { } RoaServiceClient::JsonOutcome RoaServiceClient::makeRequest( - const std::string &endpoint, - const RoaServiceRequest &msg, HttpRequest::Method method)const { - auto outcome = AttemptRequest(endpoint, msg, method); + const std::string &endpoint, + const RoaServiceRequest &request, HttpRequest::Method method) const +{ + auto outcome = AttemptRequest(endpoint, request, request.method()); if (outcome.isSuccess()) return JsonOutcome(std::string(outcome.result().body(), outcome.result().bodySize())); diff --git a/core/src/RpcServiceClient.cc b/core/src/RpcServiceClient.cc index 78f095b7d..cd1b8f141 100644 --- a/core/src/RpcServiceClient.cc +++ b/core/src/RpcServiceClient.cc @@ -37,9 +37,10 @@ RpcServiceClient::~RpcServiceClient() { } RpcServiceClient::JsonOutcome RpcServiceClient::makeRequest( - const std::string &endpoint, - const RpcServiceRequest &msg, HttpRequest::Method method)const { - auto outcome = AttemptRequest(endpoint, msg, method); + const std::string &endpoint, + const RpcServiceRequest &request, HttpRequest::Method method) const +{ + auto outcome = AttemptRequest(endpoint, request, request.method()); if (outcome.isSuccess()) return JsonOutcome(std::string(outcome.result().body(), outcome.result().bodySize())); diff --git a/core/src/ServiceRequest.cc b/core/src/ServiceRequest.cc index ac091d8d4..7692f559a 100644 --- a/core/src/ServiceRequest.cc +++ b/core/src/ServiceRequest.cc @@ -30,7 +30,8 @@ ServiceRequest::ServiceRequest(const std::string &product, version_(version), scheme_("https"), connectTimeout_(kInvalidTimeout), - readTimeout_(kInvalidTimeout) + readTimeout_(kInvalidTimeout), + method_(HttpRequest::Method::Get) { } @@ -169,6 +170,11 @@ std::string ServiceRequest::version() const return version_; } +HttpRequest::Method ServiceRequest::method() const +{ + return method_; +} + void ServiceRequest::setVersion(const std::string &version) { version_ = version; @@ -224,4 +230,9 @@ void ServiceRequest::setReadTimeout(const long readTimeout) readTimeout_ = readTimeout; } +void ServiceRequest::setMethod(const HttpRequest::Method method) +{ + method_ = method; +} + } // namespace AlibabaCloud