QNetworkRequest URL 包含 '?' - 由于 QUrl 编码而未正确请求
QNetworkRequest URL containing '?' - not requesting properly because of QUrl encoding
我有下一个代码来发出请求:
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));
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 在多个核心中处理一个HTTP请求
- 在卡萨布兰卡形成编码参数的列表
- 使用C++进行游程编码
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用已使用 java 编码的 openssl 解码数据
- boost 是否有按特殊类型值编码状态"compact optional"?
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
- 错误:请求非类类型为"MULTIMEDIA_FILME [500]"的成员|
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 绝对编码器十六进制输入
- 每个服务器请求的内存预算
- 如何使用 ffmpeg 将 3840 nb_samples编码为请求 1024 的编解码器
- AJAX Post请求编码
- QNetworkRequest URL 包含 '?' - 由于 QUrl 编码而未正确请求