サーバーに投稿リクエストを送信したいのですが、次のようにします。
function makePost(){
QNetworkAccessManager *networkManager = new QNetworkAccessManager();
qDebug()<<"1";
bool ret = connect(networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(serviceRequestFinished(QNetworkReply*)));
qDebug()<<"2: " <<ret;
QUrl serviceUrl = QUrl("http://someurl/json");
QNetworkRequest request(serviceUrl);
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QString content = "";
networkManager->post(request, content.toUtf8());
}
しかし、スロットserviceRequestFinished()
はまったく呼び出されません! Wireshark を使用してリクエスト/レスポンスを追跡したところ、リクエスト (投稿) が送信され、サーバーがステータス200
(ok) を含むレスポンスを返すことがわかりました。また、ret
変数は を返しますtrue
。つまり、信号とスロットの間の接続が正常に行われました。これがうまくいかない理由を知っている人はいますか?ありがとうございました!:)
編集
問題を引き起こすコード - 私の答えを見てください - はこれです:
{
MyObjectWithSlot obj;
obj.makePost();
}