gpt4 book ai didi

qt - 通过 QNetworkAccessManager 发布请求

转载 作者:行者123 更新时间:2023-12-04 12:58:24 33 4
gpt4 key购买 nike

我在使用 QNetworkAccessManager 类的对象时遇到问题。我想向 Web 服务器发送 POST 请求。我的代码是

 QNetworkAccessManager *manager; 
manager = new QNetworkAccessManager ();
QNetworkRequest req;
req.setUrl(QUrl("http://example.com"));
//Configure the parameters for the post request:
QByteArray postData;
postData.append("Login=log_name&");
postData.append("Password=some_pass");
//Now create a QCookieJar:
manager->setCookieJar(new QNetworkCookieJar(manager));
//Define the Request-url:
connect (manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinish (QNetworkReply *)));
//Send the request:
manager->post(req, postData);

使用的SLOT代码为:

void MainWindow::replyFinish(QNetworkReply *reply) 
{
QString answer = QString::fromUtf8(reply->readAll());
qDebug () << answer;
}

问题是答案是一个空字符串,但我相信它应该是一些描述的 html 代码接受或拒绝授权。

感谢您的帮助。

最佳答案

大多数站点在登录请求后(或填写表单后)使用 HTTP 重定向。并且您需要在同一个插槽中测试错误。

您可以使用类似于 that code 的方式处理重定向(和错误) .

因为 QNetworkAccessManager 已经创建了它自己的基础 QNetworkCookieJar 对象,所以如果您没有编写派生类或者如果您不这样做,则不需要实例化一个与其他经理共享一个 cookies jar 。但是您需要为后续请求使用相同的管理器(或相同的 cookie jar),以便能够在登录期间重用服务器设置的 cookie。

关于qt - 通过 QNetworkAccessManager 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628120/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com