1 在异步子线程中 用QEventLoop 同步请求,不然没有响应,
void GetThread ::run()
{
QNetworkAccessManager manger;
QNetworkRequest request;
QSslConfiguration config =QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::AnyProtocol);
config.setPeerVerifyMode(QSslSocket::VerifyNone);
request.setSslConfiguration(config);
request.setUrl(QUrl(myurl));
// QNetworkReply *reply = manger.get(QNetworkRequest(QUrl("http://www.baidu.com")));
QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()),&eventLoop, SLOT(quit()));
eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
QNetworkReply *reply = manger.get(request);
//在子线程中 要同步请求 ,reply 才有返回值
}
2,在主线程中 不用同步,默认是异步请求,replayFininshFunc1会收到返回值
void MainWindow::on_pushButton_clicked()
{
connect(manger,
&QNetworkAccessManager::finished,
this,
&MainWindow::replayFininshFunc1);
/*
connect(manger,
&QNetworkAccessManager::finished,
this,
[=](QNetworkReply *repy){
ui->textBrowser->setText(repy->readAll());
qDebug()<<"manger:"<<QThread::currentThread();
});
*/
manger->get(QNetworkRequest(QUrl("http://www.baidu.com")));
}
void MainWindow::replayFininshFunc1(QNetworkReply* reply)
{
qDebug()<<"replayFininshFunc1 :";
}