如何在 Qt 中的 HTTP Post 之后从 PHP 发回数据?

Posted

技术标签:

【中文标题】如何在 Qt 中的 HTTP Post 之后从 PHP 发回数据?【英文标题】:How to send data back from PHP after a HTTP Post in Qt? 【发布时间】:2011-04-26 18:12:07 【问题描述】:

我正在使用此代码制作一个简单的 HTTP Post(登录)

   QNetworkAccessManager *nwam = new QNetworkAccessManager;

   QNetworkRequest request(QUrl("http://localhost/laptop/trylogin.php"));

   QByteArray data;
   QUrl params;

   QString userString(user);
   QString passString(pass);

   params.addQueryItem("user", userString );
   params.addQueryItem("pass", passString );
   data.append(params.toString());
   data.remove(0,1);

   QNetworkReply *reply = nwam->post(request,data);

如果记录成功与否,我如何在 Qt 中发送和读取响应?

【问题讨论】:

所有 HTTP 方法都有响应。因此,您的应用程序(无论使用哪种方法)都应该得到一些回报。 好的,但在我的情况下持有响应的对象是什么?我应该在 php 端做什么? 我不知道 Qt,但我认为这一行:“QNetworkReply *reply = nwam->post(request,data);”是你第一个问题的答案;其次,在 php 方面,你可以返回任何东西,真的。如果你没有让它'echo'任何东西,那么它可能返回一个空字符串,所以尝试返回任何东西,看看'reply'的内容是否改变。另外,我认为“数据”什么都不做(至少在现在的情况下),但我不知道 Qt,所以我可能错了。 【参考方案1】:

您在reply 指针中获得响应/回复。 使用QNetworkReply::error()查看是否有错误。

【讨论】:

我每次都得到 NoError 代码,即使文件不存在。【参考方案2】:

您可以捕获回复信号,因为它适用于信号和插槽。所以您必须将插槽连接到回复发出的信号 httpreadyread,然后通过回复.readAll 方法读取回复..阅读 qtnetwork 模块文档..

【讨论】:

以上是关于如何在 Qt 中的 HTTP Post 之后从 PHP 发回数据?的主要内容,如果未能解决你的问题,请参考以下文章

Qt通过HTTP POST上传文件

如何使用Qt进行post get模拟登录

如何使用Qt进行post get模拟登录

从 ASP.NET 中的 POST 方法中检索数据

来自 Qt5 中 http 客户端的 Post 方法

在 $http.post 之后使用 $http.get 重新加载控制器