bool QgsWcsCapabilities::sendRequest( QString const & url ) { QgsDebugMsg( "url = " + url ); mError = ""; QNetworkRequest request( url ); setAuthorization( request ); request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true ); request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, mCacheLoadControl ); QgsDebugMsg( QString( "mCacheLoadControl = %1" ).arg( mCacheLoadControl ) ); QgsDebugMsg( QString( "getcapabilities: %1" ).arg( url ) ); mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request ); connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) ); connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) ); while ( mCapabilitiesReply ) { QCoreApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); } if ( mCapabilitiesResponse.isEmpty() ) { if ( mError.isEmpty() ) { mErrorFormat = "text/plain"; mError = tr( "empty capabilities document" ); } return false; } if ( mCapabilitiesResponse.startsWith( "<html>" ) || mCapabilitiesResponse.startsWith( "<HTML>" ) ) { mErrorFormat = "text/html"; mError = mCapabilitiesResponse; return false; } return true; }
void QgsWcsCapabilities::capabilitiesReplyFinished() { if ( mCapabilitiesReply->error() == QNetworkReply::NoError ) { QVariant redirect = mCapabilitiesReply->attribute( QNetworkRequest::RedirectionTargetAttribute ); if ( !redirect.isNull() ) { emit statusChanged( tr( "Capabilities request redirected." ) ); QNetworkRequest request( redirect.toUrl() ); setAuthorization( request ); request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork ); request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true ); mCapabilitiesReply->deleteLater(); QgsDebugMsg( QString( "redirected getcapabilities: %1" ).arg( redirect.toString() ) ); mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request ); connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) ); connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) ); return; } mCapabilitiesResponse = mCapabilitiesReply->readAll(); if ( mCapabilitiesResponse.isEmpty() ) { mErrorFormat = "text/plain"; mError = tr( "empty of capabilities: %1" ).arg( mCapabilitiesReply->errorString() ); } } else { // Resend request if AlwaysCache QNetworkRequest request = mCapabilitiesReply->request(); if ( request.attribute( QNetworkRequest::CacheLoadControlAttribute ).toInt() == QNetworkRequest::AlwaysCache ) { QgsDebugMsg( "Resend request with PreferCache" ); request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache ); mCapabilitiesReply->deleteLater(); mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request ); connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) ); connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) ); return; } mErrorFormat = "text/plain"; mError = tr( "Download of capabilities failed: %1" ).arg( mCapabilitiesReply->errorString() ); QgsMessageLog::logMessage( mError, tr( "WCS" ) ); mCapabilitiesResponse.clear(); } mCapabilitiesReply->deleteLater(); mCapabilitiesReply = 0; }
bool QgsWcsCapabilities::sendRequest( QString const & url ) { QgsDebugMsg( "url = " + url ); mError = ""; QNetworkRequest request( url ); if ( !setAuthorization( request ) ) { mError = tr( "Download of capabilities failed: network request update failed for authentication config" ); QgsMessageLog::logMessage( mError, tr( "WCS" ) ); return false; } request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true ); request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, mCacheLoadControl ); QgsDebugMsg( QString( "mCacheLoadControl = %1" ).arg( mCacheLoadControl ) ); QgsDebugMsg( QString( "getcapabilities: %1" ).arg( url ) ); mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request ); if ( !setAuthorizationReply( mCapabilitiesReply ) ) { mCapabilitiesReply->deleteLater(); mCapabilitiesReply = nullptr; mError = tr( "Download of capabilities failed: network reply update failed for authentication config" ); QgsMessageLog::logMessage( mError, tr( "WCS" ) ); return false; } connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) ); connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) ); QEventLoop loop; connect( this, SIGNAL( downloadFinished() ), &loop, SLOT( quit() ) ); loop.exec( QEventLoop::ExcludeUserInputEvents ); if ( mCapabilitiesResponse.isEmpty() ) { if ( mError.isEmpty() ) { mErrorFormat = "text/plain"; mError = tr( "empty capabilities document" ); } return false; } if ( mCapabilitiesResponse.startsWith( "<html>" ) || mCapabilitiesResponse.startsWith( "<HTML>" ) ) { mErrorFormat = "text/html"; mError = mCapabilitiesResponse; return false; } return true; }