Je vais créer une application qui est mentionné de se connecter à une instance de serveur sur owncloud, mais je ne trouve pas pourquoi il ne se connecte pas au serveur. Au lieu de cela la réponse je reçois est l'écran de connexion et j'obtiens le code html pour cela
le code responsable de la connexion:
le code qui reçoit la réponse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //the network request and reply QNetworkAccessManager * manager = new QNetworkAccessManager(); QUrl url (url1); manager->get(QNetworkRequest(url)); connect(manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), SLOT(provideAuthenication(QNetworkReply*,QAuthenticator*))); connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(result(QNetworkReply *)));
pourriez-vous m'aider à comprendre pourquoi je reçois l'écran de connexion au lieu de l'authentification?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 void Login::result(QNetworkReply *reply) { reply->deleteLater(); if(reply->error() == QNetworkReply::NoError) { // Get the http status code int v = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (v >= 200 && v < 300) // Success { qDebug()<<"Here we got the final reply"; QString replyText = reply->readAll(); qDebug()<<replyText; } else if (v >= 300 && v < 400) // Redirection { qDebug()<<"Get the redirection url"; QUrl newUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); // Because the redirection url can be relative, // we have to use the previous one to resolve it newUrl = reply->url().resolved(newUrl); QNetworkAccessManager *manager = reply->manager(); QNetworkRequest redirection(newUrl); QNetworkReply *newReply = manager->get(redirection); QString replyText = newReply->readAll(); qDebug()<<replyText; return; // to keep the manager for the next request } } else { // Error qDebug()<<reply->errorString(); } reply->manager()->deleteLater(); }
Partager