Qt如何向服务器发送https请求?

Sar*_*han 9 c++ https qt request

我尝试使用https url 发送get请求.回复为空,但没有错误消息.我下载OpenSSL并将libeay32.dllssleay32.dll文件复制到C:\ Qt\Qt5.1.1\Tools\QtCreator\bin文件夹.

码:

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();
Run Code Online (Sandbox Code Playgroud)

Gáb*_*yal 5

正如 Frank 在他的 commet 中所写,get 函数是异步的,因此在您尝试阅读答案时,http 请求甚至可能还没有完成。

要解决这个问题,您需要处理finished信号:

connect(manager, SIGNAL(finished(QNetworkReply*)), this,
                 SLOT(replyFinished(QNetworkReply*)));
Run Code Online (Sandbox Code Playgroud)

并在处理程序中读取结果:

void NetworkHandler::replyFinished(QNetworkReply *reply)
{
  qDebug() << reply->readAll();
}
Run Code Online (Sandbox Code Playgroud)