2727#include " qgscoordinatereferencesystem.h"
2828#include " qgswfsfeatureiterator.h"
2929#include " qgswfsprovider.h"
30+ #include " qgsdatasourceuri.h"
3031#include " qgsspatialindex.h"
3132#include " qgslogger.h"
3233#include " qgsmessagelog.h"
@@ -89,6 +90,9 @@ QgsWFSProvider::QgsWFSProvider( const QString& uri )
8990 mSourceCRS .createFromOgcWmsCrs ( srsname );
9091 }
9192
93+ mAuth .mUserName = parameterFromUrl ( " username" );
94+ mAuth .mPassword = parameterFromUrl ( " password" );
95+
9296 // fetch attributes of layer and type of its geometry attribute
9397 // WBC 111221: extracting geometry type here instead of getFeature allows successful
9498 // layer creation even when no features are retrieved (due to, e.g., BBOX or FILTER)
@@ -682,7 +686,10 @@ int QgsWFSProvider::getFeatureGET( const QString& uri, const QString& geometryAt
682686 }
683687
684688 // if ( dataReader.getWFSData() != 0 )
685- if ( dataReader.getFeatures ( uri, &mWKBType , &mExtent ) != 0 )
689+ QUrl getFeatureUrl ( uri );
690+ getFeatureUrl.removeQueryItem ( " username" );
691+ getFeatureUrl.removeQueryItem ( " password" );
692+ if ( dataReader.getFeatures ( getFeatureUrl.toString (), &mWKBType , &mExtent , mAuth .mUserName , mAuth .mPassword ) != 0 )
686693 {
687694 QgsDebugMsg ( " getWFSData returned with error" );
688695 return 1 ;
@@ -751,10 +758,13 @@ int QgsWFSProvider::describeFeatureTypeGET( const QString& uri, QString& geometr
751758 mNetworkRequestFinished = false ;
752759
753760 QUrl describeFeatureUrl ( uri );
761+ describeFeatureUrl.removeQueryItem ( " username" );
762+ describeFeatureUrl.removeQueryItem ( " password" );
754763 describeFeatureUrl.removeQueryItem ( " SRSNAME" );
755764 describeFeatureUrl.removeQueryItem ( " REQUEST" );
756765 describeFeatureUrl.addQueryItem ( " REQUEST" , " DescribeFeatureType" );
757766 QNetworkRequest request ( describeFeatureUrl.toString () );
767+ mAuth .setAuthorization ( request );
758768 QNetworkReply* reply = QgsNetworkAccessManager::instance ()->get ( request );
759769
760770 connect ( reply, SIGNAL ( finished () ), this , SLOT ( networkRequestFinished () ) );
@@ -1338,6 +1348,8 @@ bool QgsWFSProvider::sendTransactionDocument( const QDomDocument& doc, QDomDocum
13381348 mNetworkRequestFinished = false ;
13391349
13401350 QUrl typeDetectionUri ( dataSourceUri () );
1351+ typeDetectionUri.removeQueryItem ( " username" );
1352+ typeDetectionUri.removeQueryItem ( " password" );
13411353 typeDetectionUri.removeQueryItem ( " REQUEST" );
13421354 typeDetectionUri.removeQueryItem ( " TYPENAME" );
13431355 typeDetectionUri.removeQueryItem ( " BBOX" );
@@ -1349,6 +1361,7 @@ bool QgsWFSProvider::sendTransactionDocument( const QDomDocument& doc, QDomDocum
13491361 QString serverUrl = typeDetectionUri.toString ();
13501362
13511363 QNetworkRequest request ( serverUrl );
1364+ mAuth .setAuthorization ( request );
13521365 request.setHeader ( QNetworkRequest::ContentTypeHeader, " text/xml" );
13531366 QNetworkReply* reply = QgsNetworkAccessManager::instance ()->post ( request, doc.toByteArray ( -1 ) );
13541367
@@ -1475,7 +1488,11 @@ void QgsWFSProvider::getLayerCapabilities()
14751488
14761489 QString uri = dataSourceUri ();
14771490 uri.replace ( QString ( " GetFeature" ), QString ( " GetCapabilities" ) );
1478- QNetworkRequest request ( uri );
1491+ QUrl getCapabilitiesUrl ( uri );
1492+ getCapabilitiesUrl.removeQueryItem ( " username" );
1493+ getCapabilitiesUrl.removeQueryItem ( " password" );
1494+ QNetworkRequest request ( getCapabilitiesUrl.toString () );
1495+ mAuth .setAuthorization ( request );
14791496 QNetworkReply* reply = QgsNetworkAccessManager::instance ()->get ( request );
14801497
14811498 connect ( reply, SIGNAL ( finished () ), this , SLOT ( networkRequestFinished () ) );
0 commit comments