Qt:发送数据到服务器
Qt: Post data to server
我尝试实现一个REST客户端,以便从我的服务器获得一个服务票据。对于那些不知道CAS的人:可以通过出示TGT来申请服务票。TGT基本上可以通过成功登录请求。也许这根本不相关。
我想我的连接有一个错误。我的服务器甚至没有对该连接作出反应,并且回复为空。然而,由于某种原因,reply->error() == QNetworkReply::NoError
是正确的。
我做错了什么?
bool Client::validateTGT(QString const & tgt) const
{
bool isValid = false;
QUrl url = QUrl("https://localhost:8943/cas/v1/tickets/" + tgt);
QUrl postData;
postData.addQueryItem("service", "https://test.de");
QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader,
"application/x-www-form-urlencoded");
//QNetworkAccessManager *networkManager = new QNetworkAccessManager();
QObject::connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)), Qt::AutoConnection);
QNetworkReply *reply = manager->post(request, postData.encodedQuery());
QByteArray replyData = reply->readAll();
QString s_data = QString::fromAscii(replyData.data());
if (reply->error() == QNetworkReply::NoError)
{
isValid = true;
}
return isValid;
}
EDIT: replyFinished
as requested
. h:
public slots:
void replyFinished(QNetworkReply *);
. cpp:
void CCASRESTClient::replyFinished(QNetworkReply *reply)
{
QByteArray replyData = reply->readAll();
serviceTicket = QString::fromAscii(replyData.data());
}
当应答从服务器到达时,事件循环调用槽replyFinished
,这发生在您的函数validateTGT
返回之后很远的地方。
manager
对象接收到应答,然后发出finished
信号,此时调用槽位replyFinished
。从那里返回值是没有意义的。只要问问你自己,谁是调用函数,将得到这个返回值? validateTGT
已经返回,因此它没有得到任何东西。
您的插槽需要声明为返回void
,并且您应该对replyFinished
插槽中的回复做任何您想做的事情。
通常,如果您有任何返回值的槽,则无法检索返回值,除非将该槽作为普通函数调用(显然这里不是这种情况)。
相关文章:
- 将相机数据从服务器实时流式传输到客户端
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- Arduino UNO+SIM800L-向服务器发送数据
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- Java 客户端C++服务器数据发送/接收问题
- QTcpSocket 在 RemoteHostClosedError 后重新连接到服务器时无法传输数据
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- 如何在C++中使用带有SFML的http reqest从节点.js服务器获取数据?
- 在 MySQL 中运行 HTTP 服务器以从客户端接收数据
- 使用 Broadcast 发出的从节点服务器发送的数据不能被 C++ 套接字 IO 客户端读取
- 如何使用 asio 本地数据报构建回显服务器和客户端?
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 如何使用gRPC在客户端和服务器之间双向发送和接收流元数据
- 通过TCP将数据从C++客户端发送到JSON服务器
- 如何使客户端在将数据写入 C++ 管道之前检查服务器是否完成了从管道的读取操作
- C++中从客户端到服务器的数据传输问题
- 可视化 将 TCP 服务器数据包保存到 C++ 中的文件
- 客户端(cocos2d-x) <-> 服务器(php) 如何将服务器数据发送回 Cleint?