authenticationRequired nur jedes zweite Mal

Alles rund um die Programmierung mit Qt
Antworten
simon.hain
Beiträge: 10
Registriert: 30. August 2012 14:03

authenticationRequired nur jedes zweite Mal

Beitrag von simon.hain »

Hallo,
ich rufe mehrere Webservices nacheinander auf und habe dafür eine Klasse mit einem QtSoapHttpTransport.
Das Signal vom Transport verbinde ich im Konstruktor:

Code: Alles auswählen

connect(&m_soap, SIGNAL(responseReady()), SLOT(onServiceResponse()));
Beim Aufruf verbinde ich dann die Signale des QAuthenticators:

Code: Alles auswählen

	QNetworkAccessManager* acc = m_soap.networkAccessManager();
	connect(acc, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(authReq(QNetworkReply*,QAuthenticator*)));
	connect(acc, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
Die Webservices verlangen jeweils nach BasicAuth.

Beim ersten Aufruf wird authenticationRequired signalisiert, ich zeige einen Dialog an und drücke dort cancel.
Danach wird der zweite Service aufgerufen, jetzt wird aber nicht authenticationRequired signalisiert sondern responseReady.
Die Response ist fehlerhaft (isFault true) und es gibt einen Netzwerkfehler:

Code: Alles auswählen

const QtSoapMessage& resp = m_soap.getResponse();
if (resp.isFault()) {
	m_error = "Query failed: " + resp.faultString().value().toString();
	QNetworkReply* reply = m_soap.networkReply();
	int errorCode = reply->error();
	qWarning() << m_error;
	emit error(m_error)
Ausgabe ist:
Warning: 16:22:09.765 "Query failed: Network transport error (204): Host requires authentication"

Danach wird dann der nächste Service aufgerufen. Bei diesem wird wieder authenticationRequired signalisiert.
Rätselhaft, oder?
Antworten