本文整理汇总了C++中URI::SetPath方法的典型用法代码示例。如果您正苦于以下问题:C++ URI::SetPath方法的具体用法?C++ URI::SetPath怎么用?C++ URI::SetPath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类URI
的用法示例。
在下文中一共展示了URI::SetPath方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
static Aws::String CanonicalizeRequestSigningString(HttpRequest& request, bool urlEscapePath)
{
request.CanonicalizeRequest();
Aws::StringStream signingStringStream;
signingStringStream << HttpMethodMapper::GetNameForHttpMethod(request.GetMethod());
//double encode paths unless explicitly stated otherwise (for s3 compatibility)
URI uriCpy = request.GetUri();
uriCpy.SetPath(uriCpy.GetURLEncodedPath());
signingStringStream << NEWLINE << (urlEscapePath ? uriCpy.GetURLEncodedPath() : uriCpy.GetPath()) << NEWLINE;
if (request.GetQueryString().size() > 1 && request.GetQueryString().find("=") != std::string::npos)
{
signingStringStream << request.GetQueryString().substr(1) << NEWLINE;
}
else if (request.GetQueryString().size() > 1)
{
signingStringStream << request.GetQueryString().substr(1) << "=" << NEWLINE;
}
else
{
signingStringStream << NEWLINE;
}
return signingStringStream.str();
}
示例2: writeContext
std::shared_ptr<HttpResponse> CurlHttpClient::MakeRequest(HttpRequest& request, Aws::Utils::RateLimits::RateLimiterInterface* readLimiter,
Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter) const
{
//handle uri encoding at last second. Otherwise, the signer and the http layer will mismatch.
URI uri = request.GetUri();
uri.SetPath(URI::URLEncodePath(uri.GetPath()));
Aws::String url = uri.GetURIString();
AWS_LOGSTREAM_TRACE(CURL_HTTP_CLIENT_TAG, "Making request to " << url);
struct curl_slist* headers = NULL;
if (writeLimiter != nullptr)
{
writeLimiter->ApplyAndPayForCost(request.GetSize());
}
Aws::StringStream headerStream;
HeaderValueCollection requestHeaders = request.GetHeaders();
AWS_LOG_TRACE(CURL_HTTP_CLIENT_TAG, "Including headers:");
for (auto& requestHeader : requestHeaders)
{
headerStream.str("");
headerStream << requestHeader.first << ": " << requestHeader.second;
Aws::String headerString = headerStream.str();
AWS_LOGSTREAM_TRACE(CURL_HTTP_CLIENT_TAG, headerString);
headers = curl_slist_append(headers, headerString.c_str());
}
headers = curl_slist_append(headers, "transfer-encoding:");
if (!request.HasHeader(Http::CONTENT_LENGTH_HEADER))
{
headers = curl_slist_append(headers, "content-length:");
}
if (!request.HasHeader(Http::CONTENT_TYPE_HEADER))
{
headers = curl_slist_append(headers, "content-type:");
}
std::shared_ptr<HttpResponse> response(nullptr);
CURL* connectionHandle = m_curlHandleContainer.AcquireCurlHandle();
if (connectionHandle)
{
AWS_LOGSTREAM_DEBUG(CURL_HTTP_CLIENT_TAG, "Obtained connection handle " << connectionHandle);
if (headers)
{
curl_easy_setopt(connectionHandle, CURLOPT_HTTPHEADER, headers);
}
response = Aws::MakeShared<StandardHttpResponse>(CURL_HTTP_CLIENT_TAG, request);
CurlWriteCallbackContext writeContext(this, &request, response.get(), readLimiter);
CurlReadCallbackContext readContext(this, &request);
SetOptCodeForHttpMethod(connectionHandle, request);
curl_easy_setopt(connectionHandle, CURLOPT_URL, url.c_str());
curl_easy_setopt(connectionHandle, CURLOPT_WRITEFUNCTION, &CurlHttpClient::WriteData);
curl_easy_setopt(connectionHandle, CURLOPT_WRITEDATA, &writeContext);
curl_easy_setopt(connectionHandle, CURLOPT_HEADERFUNCTION, &CurlHttpClient::WriteHeader);
curl_easy_setopt(connectionHandle, CURLOPT_HEADERDATA, response.get());
//we only want to override the default path if someone has explicitly told us to.
if(!m_caPath.empty())
{
curl_easy_setopt(connectionHandle, CURLOPT_CAPATH, m_caPath.c_str());
}
// only set by android test builds because the emulator is missing a cert needed for aws services
#ifdef TEST_CERT_PATH
curl_easy_setopt(connectionHandle, CURLOPT_CAPATH, TEST_CERT_PATH);
#endif // TEST_CERT_PATH
if (m_verifySSL)
{
curl_easy_setopt(connectionHandle, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(connectionHandle, CURLOPT_SSL_VERIFYHOST, 2L);
#if LIBCURL_VERSION_MAJOR >= 7
#if LIBCURL_VERSION_MINOR >= 34
curl_easy_setopt(connectionHandle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
#endif //LIBCURL_VERSION_MINOR
#endif //LIBCURL_VERSION_MAJOR
}
else
{
curl_easy_setopt(connectionHandle, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(connectionHandle, CURLOPT_SSL_VERIFYHOST, 0L);
}
if (m_allowRedirects)
{
curl_easy_setopt(connectionHandle, CURLOPT_FOLLOWLOCATION, 1L);
}
else
{
curl_easy_setopt(connectionHandle, CURLOPT_FOLLOWLOCATION, 0L);
}
//.........这里部分代码省略.........