我在 qnetworkaccessmanager 上苦苦挣扎了一段时间。我用谷歌搜索了很多,但我没有找到解决方案。
我正在创建一个使用 qaccessmanager 与休息服务器交谈的客户端。QNetworkReply 没有返回任何结果。服务器正常工作,但客户端没有返回结果。最重要的是,服务器被调用了 3 次,有时服务器崩溃了。希望有人能弄清楚出了什么问题。我附上客户端代码。
我尝试了不同的方法,例如连接 networkaccessmanager、qnetworkreply 等的完成信号,但所有这些最终都会给出相同的错误“连接已关闭”或 readAll bytearray 为空。
void RestClientCore::ConnectToServer()
{
m_NetworkManager = new QNetworkAccessManager(this);
QUrl url("http://localhost");
url.setPort(5432);
QByteArray postData;
postData.append("/?userid=user");
postData.append("&site=site");
QNetworkReply *reply = m_NetworkManager->post(request,postData);
connect(reply, SIGNAL(readyRead()),this, SLOT(slotReadyRead()));
connect(reply, SIGNAL(finished()), this, SLOT(onRequestCompleted()));
}
void RestClientCore::onRequestCompleted() {
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
if(reply->error())
{
qDebug() <<reply->bytesAvailable() << reply->errorString();
}
else
{
qDebug() << reply->readAll();
}
reply->deleteLater();
}
void RestClientCore::slotReadyRead()
{
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
qDebug() << reply->readAll();
}
提前致谢 问候 Rejo