我从今天下午开始使用c ++,我很难过。
我有以下一行:
const QUrl command("http://192.168.11.11/subdomain/letters?t=somekeyword&p=%01")
但是当在QNetworkAccessManager中发送QUrl“命令”时,实际上是在%符号后添加 25 。 现在我知道QUrl在TolerantMode中,并且正在添加它认为它是用户输入错误。
不需要的结果:
http://192.168.11.11/subdomain/letters?t=somekeyword&p=%2501
如何阻止我的网址被修改?
我尝试将百分号加倍并插入反斜杠。
感谢任何帮助。 感谢。
答案 0 :(得分:2)
这结果是一个棘手的问题。这是我提出的解决方案:
<强>代码强>
QByteArray rawQuery("t=somekeyword&p=%01");
QUrl command("http://192.168.11.11/subdomain/letters");
command.setEncodedQuery(rawQuery);
std::cout << command.toEncoded().data();
<强>结果强>
http://192.168.11.11/subdomain/letters?t=somekeyword&p=%01
备注强>
该解决方案依赖于setEncodedQuery中描述的某些行为,该行为表明了
设置要查询的URL的查询字符串。字符串按原样插入,调用toEncoded()时不再执行编码。
如果您需要传递一个不适合键值模式的查询字符串,或者使用不同于QUrl建议的特殊字符编码方案,则此函数非常有用。
将QByteArray()的值传递给查询(null QByteArray)会完全取消查询。但是,传递QByteArray(“”)的值会将查询设置为空值,就好像原始URL只有一个“?”。
<强>参考强>