我有下一个代码来发出请求:
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/休息/login吗?方法= login_md5
但是QNetworkRequest请求这个,尽管我将url设置为编码(调试url. toencoded()打印'?"正确地):
https://somewebpage.domain: 443/REST/login % 3 fmethod = login_md5
这将导致404未找到页面。我试过用url. tostring()和url设置url,但是'?总是搞砸。我怎样才能正确地请求链接?
我试过在构造函数中像这样构建QUrl:
QUrl url (" https://" +主机+端口+ connectionString);
但是结果是下一个字符串:
https://somewebpage.xn--domain-efa/REST/login.php?方法= login_md5
你可以试试QUrl::fromEncoded
url。setUrl (QUrl:: fromPercentEncoding (url.toEncoded ())),
解析输入并返回相应的QUrl。输入假定为
编码的URL似乎有效,也许是您的web服务器有问题?
可以分别使用setPath()和setQuery()。"之前是什么?'为路径,after为查询参数。
const QStringList path_part = path.split('?');
url.setPath(path_part.at(0));
if(path_part.size() > 1)
url.setQuery(path_part.at(1));