1

Qt Creator 用作这个正在开发的小应用程序的 ide

我正在尝试使用 QNetworkAccessManager 从网站检索一些信息。将请求“发布”到网络后,将触发 finished() 信号,但是传递给 finishedSlot() 函数的指针似乎并未指向实例化对象,它只是指针的地址。启动请求的按钮单击代码和finishedSlot() 方法的代码如下所示。

在监视窗口中,我希望在“回复”旁边看到一个三角形,展开后会显示 QNetworkReply 对象的所有数据成员。相反,它有一个 @0x80c770 的值,看起来像指针地址。

我很感激任何可以帮助我理解为什么我的指针似乎没有指向 QNetworkReply 对象的人的意见。

void MainWindow::on_btnGetOAuthToken_clicked()
{


    QUrl serviceUrl("https://api.ProPhotoWebsite.com/services/oauth/authorize.mg");
    QUrl postData;
    postData.addQueryItem("method", "ProPhotoWebsite.auth.getRequestToken");
    postData.addQueryItem("oauth_consumer_key", "AAAAAAAAAAAAAAAAAAAAAAAA"); //example key
    postData.addQueryItem("oauth_nonce",QUuid::createUuid().toString());
    postData.addQueryItem("oauth_signature_method","PLAINTEXT");  
    postData.addQueryItem("oauth_signature","999999999999999999999999999"); //example
    postData.addQueryItem("oauth_timestamp", QString::number(QDateTime::currentMSecsSinceEpoch()/1000));
    postData.addQueryItem("oauth_version","1.0");

    //...
    QNetworkRequest request(serviceUrl);
    request.setHeader(QNetworkRequest::ContentTypeHeader,
                      "application/x-www-form-urlencoded");

    // Call the webservice
    QNetworkAccessManager *nam = new QNetworkAccessManager(this);
    connect(nam, SIGNAL(finished(QNetworkReply*)),
            SLOT(finishedSlot(QNetworkReply*)));
    nam->post(request,postData.encodedQuery());

}

void MainWindow::finishedSlot(QNetworkReply *reply)
{
    // Reading attributes of the reply
    // e.g. the HTTP status code
    QVariant statusCodeV =
            reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
    // Or the target URL if it was a redirect:
    QVariant redirectionTargetUrl =
            reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
    // see CS001432 on how to handle this

    // no error received?
    if (reply->error() == QNetworkReply::NoError)
    {

        QByteArray bytes = reply->readAll();  // bytes
        QString string(bytes); // string
        ui->lblWarning->setText(string);

    }
    else
    {
        // handle errors here
    }

    // need to dispose reply
    delete reply;
}
4

0 回答 0