本文整理汇总了C++中HTTPRequest::getURL方法的典型用法代码示例。如果您正苦于以下问题:C++ HTTPRequest::getURL方法的具体用法?C++ HTTPRequest::getURL怎么用?C++ HTTPRequest::getURL使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTTPRequest
的用法示例。
在下文中一共展示了HTTPRequest::getURL方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createSignatureBaseString
std::string OAuth::createSignatureBaseString(HTTPRequest& r) {
HTTPURL url = r.getURL();
std::string method = (r.getMethod() == HTTP_METHOD_POST) ? "POST" : "GET";
// Get the percent encoded parameters
HTTPParameters collected_parameters = collectParameters(r);
collected_parameters.percentEncode();
// We need to encode the parameter string (again)
PercentEncode encoder;
std::string parameter_string = collected_parameters.getQueryString();
std::string normalized_url = createNormalizedURL(r.getURL());
std::string signature_string = method +"&" +encoder.encode(normalized_url) +"&" +encoder.encode(parameter_string);
return signature_string;
}
示例2: if
ReadResult
HTTPClient::doReadString(const HTTPRequest& request,
const osgDB::Options* options,
ProgressCallback* callback )
{
initialize();
ReadResult result;
HTTPResponse response = this->doGet( request, options, callback );
if ( response.isOK() )
{
result = ReadResult( new StringObject(response.getPartAsString(0)) );
}
else if ( response.getCode() >= 400 && response.getCode() < 500 && response.getCode() != 404 )
{
// for request errors, return an error result with the part data intact
// so the user can parse it as needed. We only do this for readString.
result = ReadResult(
ReadResult::RESULT_SERVER_ERROR,
new StringObject(response.getPartAsString(0)) );
}
else
{
result = ReadResult(
response.isCancelled() ? ReadResult::RESULT_CANCELED :
response.getCode() == HTTPResponse::NOT_FOUND ? ReadResult::RESULT_NOT_FOUND :
response.getCode() == HTTPResponse::SERVER_ERROR ? ReadResult::RESULT_SERVER_ERROR :
response.getCode() == HTTPResponse::NOT_MODIFIED ? ReadResult::RESULT_NOT_MODIFIED :
ReadResult::RESULT_UNKNOWN_ERROR );
//If we have an error but it's recoverable, like a server error or timeout then set the callback to retry.
if (HTTPClient::isRecoverable( result.code() ) )
{
if (callback)
{
if ( s_HTTP_DEBUG )
{
OE_NOTICE << LC << "Error in HTTPClient for " << request.getURL() << " but it's recoverable" << std::endl;
}
callback->setNeedsRetry( true );
}
}
}
// encode headers
result.setMetadata( response.getHeadersAsConfig() );
// last-modified (file time)
result.setLastModifiedTime( getCurlFileTime(_curl_handle) );
return result;
}
示例3: collectParameters
HTTPParameters OAuth::collectParameters(HTTPRequest& r) {
setParameters();
HTTPParameters collected_parameters;
HTTPParameters body_parameters = r.getContentParameters();
HTTPParameters querystring_parameters = r.getURL().getQueryParameters();
copyParametersForSignature(body_parameters, collected_parameters);
copyParametersForSignature(querystring_parameters, collected_parameters);
copyParametersForSignature(auth_params, collected_parameters);
return collected_parameters;
}
示例4: createRequest
osg::Image*
WCS11Source::createImage(const TileKey& key,
ProgressCallback* progress)
{
HTTPRequest request = createRequest( key );
OE_INFO << "[osgEarth::WCS1.1] Key=" << key.str() << " URL = " << request.getURL() << std::endl;
double lon0,lat0,lon1,lat1;
key.getExtent().getBounds( lon0, lat0, lon1, lat1 );
// download the data. It's a multipart-mime stream, so we have to use HTTP directly.
HTTPResponse response = HTTPClient::get( request, _dbOptions.get(), progress );
if ( !response.isOK() )
{
OE_WARN << "[osgEarth::WCS1.1] WARNING: HTTP request failed" << std::endl;
return NULL;
}
//TODO: Make WCS driver use progress callback
unsigned int part_num = response.getNumParts() > 1? 1 : 0;
std::istream& input_stream = response.getPartStream( part_num );
//TODO: un-hard-code TIFFs
osgDB::ReaderWriter* reader = osgDB::Registry::instance()->getReaderWriterForExtension( "tiff" );
if ( !reader )
{
OE_NOTICE << "[osgEarth::WCS1.1] WARNING: no reader for \"tiff\"" << std::endl;
return NULL;
}
osgDB::ReaderWriter::ReadResult result = reader->readImage( input_stream ); //, getOptions() );
if ( !result.success() )
{
OE_NOTICE << "[osgEarth::WCS1.1] WARNING: readImage() failed for Reader " << reader->getName() << std::endl;
return NULL;
}
osg::Image* image = result.getImage();
//OE_NOTICE << "Returned grid is " << image->s() << "x" << image->t() << std::endl;
if ( image ) image->ref();
return image;
}
示例5: createRequest
osg::Image*
WCS11Source::createImage(const TileKey& key,
ProgressCallback* progress)
{
HTTPRequest request = createRequest( key );
double lon0,lat0,lon1,lat1;
key.getExtent().getBounds( lon0, lat0, lon1, lat1 );
ReadResult out_response = URI(request.getURL()).readImage(_dbOptions.get(), progress);
if (!out_response.failed())
{
return out_response.releaseImage();
}
else
{
OSG_INFO << LC << "Unable to create image: " << out_response.errorDetail() << ". Set OSGEARTH_HTTP_DEBUG=1 for details." << std::endl;
return NULL;
}
}
示例6: password
//.........这里部分代码省略.........
if ( !proxy_host.empty() )
{
std::stringstream buf;
buf << proxy_host << ":" << proxy_port;
std::string bufStr;
bufStr = buf.str();
proxy_addr = bufStr;
if ( s_HTTP_DEBUG )
{
OE_NOTICE << LC << "Using proxy: " << proxy_addr << std::endl;
}
//curl_easy_setopt( _curl_handle, CURLOPT_HTTPPROXYTUNNEL, 1 );
curl_easy_setopt( _curl_handle, CURLOPT_PROXY, proxy_addr.c_str() );
//Setup the proxy authentication if setup
if (!proxy_auth.empty())
{
if ( s_HTTP_DEBUG )
{
OE_NOTICE << LC << "Using proxy authentication " << proxy_auth << std::endl;
}
curl_easy_setopt( _curl_handle, CURLOPT_PROXYUSERPWD, proxy_auth.c_str());
}
}
else
{
OE_DEBUG << LC << "Removing proxy settings" << std::endl;
curl_easy_setopt( _curl_handle, CURLOPT_PROXY, 0 );
}
std::string url = request.getURL();
// Rewrite the url if the url rewriter is available
osg::ref_ptr< URLRewriter > rewriter = getURLRewriter();
if ( rewriter.valid() )
{
std::string oldURL = url;
url = rewriter->rewrite( oldURL );
OE_DEBUG << LC << "Rewrote URL " << oldURL << " to " << url << std::endl;
}
const osgDB::AuthenticationDetails* details = authenticationMap ?
authenticationMap->getAuthenticationDetails( url ) :
0;
if (details)
{
const std::string colon(":");
std::string password(details->username + colon + details->password);
curl_easy_setopt(_curl_handle, CURLOPT_USERPWD, password.c_str());
const_cast<HTTPClient*>(this)->_previousPassword = password;
// use for https.
// curl_easy_setopt(_curl, CURLOPT_KEYPASSWD, password.c_str());
#if LIBCURL_VERSION_NUM >= 0x070a07
if (details->httpAuthentication != _previousHttpAuthentication)
{
curl_easy_setopt(_curl_handle, CURLOPT_HTTPAUTH, details->httpAuthentication);
const_cast<HTTPClient*>(this)->_previousHttpAuthentication = details->httpAuthentication;
}
#endif
}
else
示例7: initialize
ReadResult
HTTPClient::doReadObject(const HTTPRequest& request,
const osgDB::Options* options,
ProgressCallback* callback)
{
initialize();
ReadResult result;
HTTPResponse response = this->doGet(request, options, callback);
if (response.isOK())
{
osgDB::ReaderWriter* reader = getReader(request.getURL(), response);
if (!reader)
{
result = ReadResult(ReadResult::RESULT_NO_READER);
}
else
{
osgDB::ReaderWriter::ReadResult rr = reader->readObject(response.getPartStream(0), options);
if ( rr.validObject() )
{
result = ReadResult(rr.takeObject());
}
else
{
if ( s_HTTP_DEBUG )
{
OE_WARN << LC << reader->className()
<< " failed to read object from " << request.getURL()
<< "; message = " << rr.message()
<< std::endl;
}
result = ReadResult(ReadResult::RESULT_READER_ERROR);
result.setErrorDetail( rr.message() );
}
}
// last-modified (file time)
result.setLastModifiedTime( getCurlFileTime(_curl_handle) );
}
else
{
result = ReadResult(
response.isCancelled() ? ReadResult::RESULT_CANCELED :
response.getCode() == HTTPResponse::NOT_FOUND ? ReadResult::RESULT_NOT_FOUND :
response.getCode() == HTTPResponse::SERVER_ERROR ? ReadResult::RESULT_SERVER_ERROR :
response.getCode() == HTTPResponse::NOT_MODIFIED ? ReadResult::RESULT_NOT_MODIFIED :
ReadResult::RESULT_UNKNOWN_ERROR );
//If we have an error but it's recoverable, like a server error or timeout then set the callback to retry.
if (HTTPClient::isRecoverable( result.code() ) )
{
if (callback)
{
if ( s_HTTP_DEBUG )
{
OE_NOTICE << LC << "Error in HTTPClient for " << request.getURL() << " but it's recoverable" << std::endl;
}
callback->setNeedsRetry( true );
}
}
}
result.setMetadata( response.getHeadersAsConfig() );
return result;
}
示例8: password
HTTPResponse
HTTPClient::doGet( const HTTPRequest& request, const osgDB::Options* options, ProgressCallback* callback) const
{
initialize();
OE_TEST << LC << "doGet " << request.getURL() << std::endl;
const osgDB::AuthenticationMap* authenticationMap = (options && options->getAuthenticationMap()) ?
options->getAuthenticationMap() :
osgDB::Registry::instance()->getAuthenticationMap();
std::string proxy_host;
std::string proxy_port = "8080";
std::string proxy_auth;
//TODO: don't do all this proxy setup on every GET. Just do it once per client, or only when
// the proxy information changes.
//Try to get the proxy settings from the global settings
if (_proxySettings.isSet())
{
proxy_host = _proxySettings.get().hostName();
std::stringstream buf;
buf << _proxySettings.get().port();
proxy_port = buf.str();
std::string proxy_username = _proxySettings.get().userName();
std::string proxy_password = _proxySettings.get().password();
if (!proxy_username.empty() && !proxy_password.empty())
{
proxy_auth = proxy_username + std::string(":") + proxy_password;
}
}
//Try to get the proxy settings from the local options that are passed in.
readOptions( options, proxy_host, proxy_port );
optional< ProxySettings > proxySettings;
ProxySettings::fromOptions( options, proxySettings );
if (proxySettings.isSet())
{
proxy_host = proxySettings.get().hostName();
proxy_port = toString<int>(proxySettings.get().port());
OE_DEBUG << "Read proxy settings from options " << proxy_host << " " << proxy_port << std::endl;
}
//Try to get the proxy settings from the environment variable
const char* proxyEnvAddress = getenv("OSG_CURL_PROXY");
if (proxyEnvAddress) //Env Proxy Settings
{
proxy_host = std::string(proxyEnvAddress);
const char* proxyEnvPort = getenv("OSG_CURL_PROXYPORT"); //Searching Proxy Port on Env
if (proxyEnvPort)
{
proxy_port = std::string( proxyEnvPort );
}
}
const char* proxyEnvAuth = getenv("OSGEARTH_CURL_PROXYAUTH");
if (proxyEnvAuth)
{
proxy_auth = std::string(proxyEnvAuth);
}
// Set up proxy server:
std::string proxy_addr;
if ( !proxy_host.empty() )
{
std::stringstream buf;
buf << proxy_host << ":" << proxy_port;
std::string bufStr;
bufStr = buf.str();
proxy_addr = bufStr;
OE_DEBUG << LC << "setting proxy: " << proxy_addr << std::endl;
//curl_easy_setopt( _curl_handle, CURLOPT_HTTPPROXYTUNNEL, 1 );
curl_easy_setopt( _curl_handle, CURLOPT_PROXY, proxy_addr.c_str() );
//Setup the proxy authentication if setup
if (!proxy_auth.empty())
{
OE_DEBUG << LC << "Setting up proxy authentication " << proxy_auth << std::endl;
curl_easy_setopt( _curl_handle, CURLOPT_PROXYUSERPWD, proxy_auth.c_str());
}
}
else
{
OE_DEBUG << "Removing proxy settings" << std::endl;
curl_easy_setopt( _curl_handle, CURLOPT_PROXY, 0 );
}
const osgDB::AuthenticationDetails* details = authenticationMap ?
authenticationMap->getAuthenticationDetails(request.getURL()) :
0;
if (details)
{
//.........这里部分代码省略.........
示例9: password
HTTPResponse
HTTPClient::doGet( const HTTPRequest& request, const osgDB::Options* options, ProgressCallback* callback) const
{
initialize();
const osgDB::AuthenticationMap* authenticationMap = (options && options->getAuthenticationMap()) ?
options->getAuthenticationMap() :
osgDB::Registry::instance()->getAuthenticationMap();
std::string proxy_host;
std::string proxy_port = "8080";
std::string proxy_auth;
//TODO: don't do all this proxy setup on every GET. Just do it once per client, or only when
// the proxy information changes.
//Try to get the proxy settings from the global settings
if (s_proxySettings.isSet())
{
proxy_host = s_proxySettings.get().hostName();
std::stringstream buf;
buf << s_proxySettings.get().port();
proxy_port = buf.str();
std::string proxy_username = s_proxySettings.get().userName();
std::string proxy_password = s_proxySettings.get().password();
if (!proxy_username.empty() && !proxy_password.empty())
{
proxy_auth = proxy_username + std::string(":") + proxy_password;
}
}
//Try to get the proxy settings from the local options that are passed in.
readOptions( options, proxy_host, proxy_port );
optional< ProxySettings > proxySettings;
ProxySettings::fromOptions( options, proxySettings );
if (proxySettings.isSet())
{
proxy_host = proxySettings.get().hostName();
proxy_port = toString<int>(proxySettings.get().port());
OE_DEBUG << "Read proxy settings from options " << proxy_host << " " << proxy_port << std::endl;
}
//Try to get the proxy settings from the environment variable
const char* proxyEnvAddress = getenv("OSG_CURL_PROXY");
if (proxyEnvAddress) //Env Proxy Settings
{
proxy_host = std::string(proxyEnvAddress);
const char* proxyEnvPort = getenv("OSG_CURL_PROXYPORT"); //Searching Proxy Port on Env
if (proxyEnvPort)
{
proxy_port = std::string( proxyEnvPort );
}
}
const char* proxyEnvAuth = getenv("OSGEARTH_CURL_PROXYAUTH");
if (proxyEnvAuth)
{
proxy_auth = std::string(proxyEnvAuth);
}
// Set up proxy server:
std::string proxy_addr;
if ( !proxy_host.empty() )
{
std::stringstream buf;
buf << proxy_host << ":" << proxy_port;
std::string bufStr;
bufStr = buf.str();
proxy_addr = bufStr;
if ( s_HTTP_DEBUG )
OE_NOTICE << LC << "Using proxy: " << proxy_addr << std::endl;
//curl_easy_setopt( _curl_handle, CURLOPT_HTTPPROXYTUNNEL, 1 );
curl_easy_setopt( _curl_handle, CURLOPT_PROXY, proxy_addr.c_str() );
//Setup the proxy authentication if setup
if (!proxy_auth.empty())
{
if ( s_HTTP_DEBUG )
OE_NOTICE << LC << "Using proxy authentication " << proxy_auth << std::endl;
curl_easy_setopt( _curl_handle, CURLOPT_PROXYUSERPWD, proxy_auth.c_str());
}
}
else
{
OE_DEBUG << "Removing proxy settings" << std::endl;
curl_easy_setopt( _curl_handle, CURLOPT_PROXY, 0 );
}
std::string url = request.getURL();
// Rewrite the url if the url rewriter is available
osg::ref_ptr< URLRewriter > rewriter = getURLRewriter();
if ( rewriter.valid() )
{
//.........这里部分代码省略.........