【发布时间】:2015-02-10 10:23:58
【问题描述】:
我想向服务器发送一个发布请求,我做了这样的事情:
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();
}
【问题讨论】:
-
这就是你的全部代码吗?您没有 CONNECT(...) 将信号连接到插槽?
标签: qt qnetworkaccessmanager qt-signals qnetworkreply