void QgsWFSFeatureHitsAsyncRequest::launch( const QUrl &url ) { sendGET( url, false, /* synchronous */ true, /* forceRefresh */ false /* cache */ ); }
bool QgsWFSDescribeFeatureType::requestFeatureType( const QString& WFSVersion, const QString& typeName ) { QUrl url( baseURL() ); url.addQueryItem( "REQUEST", "DescribeFeatureType" ); url.addQueryItem( "VERSION", WFSVersion ); url.addQueryItem( "TYPENAME", typeName ); return sendGET( url, true, false ); }
bool QgsWfsRequest::sendPOST( const QUrl &url, const QString &contentTypeHeader, const QByteArray &data ) { abort(); // cancel previous mIsAborted = false; mTimedout = false; mGotNonEmptyResponse = false; mErrorMessage.clear(); mErrorCode = QgsWfsRequest::NoError; mForceRefresh = true; mResponse.clear(); if ( url.toEncoded().contains( "fake_qgis_http_endpoint" ) ) { // Hack for testing purposes QUrl modifiedUrl( url ); modifiedUrl.addQueryItem( QStringLiteral( "POSTDATA" ), QString::fromUtf8( data ) ); return sendGET( modifiedUrl, true, true, false ); } QNetworkRequest request( url ); QgsSetRequestInitiatorClass( request, QStringLiteral( "QgsWfsRequest" ) ); if ( !mUri.auth().setAuthorization( request ) ) { mErrorCode = QgsWfsRequest::NetworkError; mErrorMessage = errorMessageFailedAuth(); QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) ); return false; } request.setHeader( QNetworkRequest::ContentTypeHeader, contentTypeHeader ); mReply = QgsNetworkAccessManager::instance()->post( request, data ); mReply->setReadBufferSize( READ_BUFFER_SIZE_HINT ); if ( !mUri.auth().setAuthorizationReply( mReply ) ) { mErrorCode = QgsWfsRequest::NetworkError; mErrorMessage = errorMessageFailedAuth(); QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) ); return false; } connect( mReply, &QNetworkReply::finished, this, &QgsWfsRequest::replyFinished ); connect( mReply, &QNetworkReply::downloadProgress, this, &QgsWfsRequest::replyProgress ); QEventLoop loop; connect( this, &QgsWfsRequest::downloadFinished, &loop, &QEventLoop::quit ); loop.exec( QEventLoop::ExcludeUserInputEvents ); return mErrorMessage.isEmpty(); }
bool QgsWfsCapabilities::requestCapabilities( bool synchronous ) { QUrl url( baseURL() ); url.addQueryItem( "REQUEST", "GetCapabilities" ); const QString& version = mUri.version(); if ( version == QgsWFSConstants::VERSION_AUTO ) // MapServer honours the order with the first value being the preferred one url.addQueryItem( "ACCEPTVERSIONS", "2.0.0,1.1.0,1.0.0" ); else url.addQueryItem( "VERSION", version ); if ( !sendGET( url, synchronous, false ) ) { emit gotCapabilities(); return false; } return true; }
bool QgsWFSRequest::sendPOST( const QUrl& url, const QString& contentTypeHeader, const QByteArray& data ) { abort(); // cancel previous mIsAborted = false; mTimedout = false; mGotNonEmptyResponse = false; mErrorMessage.clear(); mErrorCode = QgsWFSRequest::NoError; mForceRefresh = true; mResponse.clear(); if ( url.toEncoded().contains( "fake_qgis_http_endpoint" ) ) { // Hack for testing purposes QUrl modifiedUrl( url ); modifiedUrl.addQueryItem( "POSTDATA", QString::fromUtf8( data ) ); return sendGET( modifiedUrl, true, true, false ); } QNetworkRequest request( url ); if ( !mUri.auth().setAuthorization( request ) ) { mErrorCode = QgsWFSRequest::NetworkError; mErrorMessage = errorMessageFailedAuth(); QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) ); return false; } request.setHeader( QNetworkRequest::ContentTypeHeader, contentTypeHeader ); mReply = QgsNetworkAccessManager::instance()->post( request, data ); connect( mReply, SIGNAL( finished() ), this, SLOT( replyFinished() ) ); connect( mReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( replyProgress( qint64, qint64 ) ) ); QEventLoop loop; connect( this, SIGNAL( downloadFinished() ), &loop, SLOT( quit() ) ); loop.exec( QEventLoop::ExcludeUserInputEvents ); return mErrorMessage.isEmpty(); }