0

我已使用此代码使用 POST 方法将用户名和密码发送到服务器。这会给我一个回复,那么我怎样才能以读取从服务器发送回给我的数据的方式访问回复变量?

使用代码:

void MainWindow::post(QString name, QString password)
{
    QUrl serviceUrl = QUrl("http://lascivio.co/mobile/post.php");
    QByteArray postData;
    QString s = "param1="+name+"&";
    postData.append(s);
    s = "param2=" +password;
    postData.append(s);
    QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
    connect(networkManager, SIGNAL(finished(QNetworkReply*)), this,     SLOT(serviceRequestFinished(QNetworkReply*)));
    QNetworkRequest request;
    request.setUrl(serviceUrl);
    QNetworkReply* reply = networkManager->post(request, postData);
}
void MainWindow::serviceRequestFinished(QNetworkReply* reply)
{
//????????????
}
4

1 回答 1

3

QNetworkReply是 a QIODevice,因此您可以像读取文件一样读取它。但是您也必须在该插槽中销毁QNetworkReply并检查错误。

例如,在最简单的情况下(没有 HTTP 重定向):

void MainWindow::serviceRequestFinished(QNetworkReply* reply)
{
    // At the end of that slot, we won't need it anymore
    reply->deleteLater();

    if(reply->error() == QNetworkReply::NoError) {
        QByteArray data = reply->readAll();
        // do something with data
        ...
    } else {
        // Handle the error
        ...
    }
}

您可能应该将QNetworkAccessManager变量声明为类的成员,而不是为每个请求创建一个新变量。

于 2011-08-24T15:42:02.943 回答