gpt4 book ai didi

c++ - 包含 '?' 的 QNetworkRequest URL - 由于 QUrl 编码而无法正确请求

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:59 25 4
gpt4 key购买 nike

我有下一个代码来发出请求:

void HTTPClient::post(QString connectionString, QHttpMultiPart* _multiPart, bool returnProgress) {
QUrl url;
if (ssl)
url.setScheme("https");
else
url.setScheme("http");
url.setHost(host);
url.setPort(port);
url.setPath(connectionString);
url.setUrl(url.toEncoded());
QNetworkRequest request(url);
request.setRawHeader("User-Agent", QCoreApplication::applicationName().toLatin1());

/*...irrelevant code...*/
}

请求的url应该是

https://somewebpage.domain:443/REST/login.php?method=login_md5

但是 QNetworkRequest 请求这个请求,尽管我将 url 设置为已编码(调试 url.toEncoded() 正确打印“?”):

https://somewebpage.domain:443/REST/login.php%3Fmethod=login_md5

这会导致 404 未找到页面。我试过用 url.toString() 设置 url,只是 url,但是 '?'一直在搞砸。我该怎么做才能正确请求链接?

我试过像这样在构造函数中构建 QUrl:

QUrl url("https://"+host+port+connectionString);

但结果是下一个字符串:

https://somewebpage.xn--domain-efa/REST/login.php?method=login_md5

最佳答案

你可以试试QUrl::fromEncoded

url.setUrl( QUrl::fromPercentEncoding(url.toEncoded()));

Parses input and returns the corresponding QUrl. input is assumed to be in encoded form, containing only ASCII characters.

正确处理字符。

关于c++ - 包含 '?' 的 QNetworkRequest URL - 由于 QUrl 编码而无法正确请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906917/

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