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()));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*)));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)
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?