Qt Comment puis-je envoyer des requête https serveur?
J'ai essayé d'envoyer la requête get avec https url. La réponse est vide, mais il n'y a pas de message d'erreur. J'ai télécharger OpenSSL et copié libeay32.dll et ssleay32.dll fichiers C:\Qt\Qt5.1.1\Tools\QtCreator\bin dossier.
Code:
QNetworkAccessManager *manager = new QNetworkAccessManager();
QNetworkRequest request;
QNetworkReply *reply = NULL;
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1_2);
request.setSslConfiguration(config);
request.setUrl(QUrl(url));
request.setHeader(QNetworkRequest::ServerHeader, "application/json");
reply = manager->get(request);
qDebug() << reply->readAll();
- Utiliser les reply->error()
- get() déclenche une /asynchrone/ opération. Au moment de l'appel readAll(), il n'y a pas encore de données. Se connecter à la réponse est fini() et error() de signaux et de lire les données dans le slot connecté à fini().
Vous devez vous connecter pour publier un commentaire.
Que Frank a écrit dans son commet, la fonction get est asynchrone, au point que vous essayez de lire la réponse de la requête http peut-être même pas encore terminée.
Pour résoudre ce problème, vous devez gérer la
finished
signal:et lisez le résultat dans le gestionnaire de:
QObject::connect(&manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
whre boucle estQEventLoop loop
. Comment puis-je utiliser connect( ) sans cette boucle d'événement? par exemple dans mes méthodes où je n'aurai pas la QcoreApplication.