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;
}