在QT QNetworkAccessManager中的HTTP获取请求中获取空响应

时间:2018-08-13 16:03:23

标签: c++ qt http

我正在向www.google.co.in发送一个简单的HTTP get请求,但是响应中却得到了空字符串。

这是我的代码:

void MainWindow::on_pushButton_clicked()
{
    QNetworkAccessManager * mgr = new QNetworkAccessManager(this);
    connect(mgr,SIGNAL(finished(QNetworkReply*)),this,SLOT(onfinish(QNetworkReply*)));

    QUrl url("www.google.co.in");
    url.setScheme("http");
    QNetworkRequest request(url);
    request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
    mgr->get(QNetworkRequest(QUrl("www.google.co.in")));


}

void MainWindow::onfinish(QNetworkReply *rep)
{
    QByteArray bts = rep->readAll();
    QString str(bts);
    qDebug() << str;

}

Output is :""

向我自己的服务器发布请求时遇到同样的问题。

在专业文件中,我已完成QT += core gui network

1 个答案:

答案 0 :(得分:2)

您必须添加正确的URL,此外,建议您在信号和插槽之间使用新的连接,最后必须删除QNetworkReply

void MainWindow::on_pushButton_clicked()
{
    QUrl url("https://www.google.co.in/");
    QNetworkAccessManager *mgr = new QNetworkAccessManager(this);
    connect(mgr,&QNetworkAccessManager::finished,this,&MainWindow::onfinish);
    mgr->get(QNetworkRequest(url));

}

void MainWindow::onfinish(QNetworkReply *rep)
{
    QByteArray bts = rep->readAll();
    QString str(bts);
    qDebug() << str;
    rep->deleteLater();
}