1

Qt Creator は、開発中のこの小さなアプリのアイデアとして使用されています

QNetworkAccessManager を使用して Web サイトから情報を取得しようとしています。リクエストが Web に「投稿」されると、finished() シグナルがトリガーされますが、finishedSlot() 関数に渡されるポインターは、インスタンス化されたオブジェクトを指しているようには見えません。これは、ポンターのアドレスです。リクエストを開始するボタン クリックのコードと、finishedSlot() メソッドのコードを以下に示します。

ウォッチ ウィンドウで、「reply」の横に三角形が表示され、展開すると 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