gpt4 book ai didi

c++ - QT 5.1.1 - 在 Post 请求中设置 urlQuery 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:39 25 4
gpt4 key购买 nike

我正在努力将一些网络代码从 QT 4.8.4 移植到 5.1.1,但似乎遇到了一个我不太清楚的问题。

QUrl postURL = QUrl("https://www.mywebsite/api");

QUrlQuery * reqParams = new QUrlQuery();
reqParams->addQueryItem("realEmail", email_lineEdit->text());
reqParams->addQueryItem("password", password_lineEdit->text());
reqParams->addQueryItem("confirmPassword", passConfirm_lineEdit->text());
reqParams->addQueryItem("firstName", firstName_lineEdit->text());
reqParams->addQueryItem("lastName", lastName_lineEdit->text());
reqParams->addQueryItem("termsAccepted", "1");

postURL.setQuery(reqParams);

QNetworkRequest netReq(postURL);
netReq.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::SslV3);
netReq.setSslConfiguration(config);

netReply = netManager->post(netReq);

编译它给我两个错误。首先,'QNetworkAccessManager::post':没有重载函数需要 1 个参数 我不确定如何解决这个问题,因为我不需要添加任何发布数据,它都包含在 QUrlQuery 中,就像我一样在印象中这是正确的做法。

我的第二个错误,'void QUrl::setQuery(const QString &,QUrl::ParsingMode)': cannot convert parameter 1 from 'QUrlQuery *' to 'const QString &' 这个有我也一样困惑。我知道有一个 setQuery 的重载需要一个 QUrlQuery * 所以一个参数它假设 2 参数版本对我来说几乎没有意义。

如果任何人都可以阐明这两个问题,或者其中一个,我将非常感激!

最佳答案

您似乎不想执行 HTTP POST,因为您不想在请求正文中发送任何数据。您想要执行 HTTP GET 请求。为此你应该调用 manager.get:

netReply = manager->get(netReq);

如果你想执行一个空主体的 HTTP POST 请求,那么你必须像这样指定空字节数组:

QByteArray empty;
netReply = manager->post(netReq, empty);

您需要将引用(不是指针)传递给 qUrl::setQuery。例如。这样做:

QUrlQuery reqParams;
reqParams.addQueryItem("realEmail", email_lineEdit->text());
...
postURL.setQuery(reqParams);

关于c++ - QT 5.1.1 - 在 Post 请求中设置 urlQuery 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780406/

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