C++ QT:QUrl,无百分比编码

C++ QT:QUrl,无百分比编码,c++,qt,get,qurl,C++,Qt,Get,Qurl,QT:我想知道是否有一种方法可以从字符串创建一个QUrl或另一个URL类对象,而无需对最终URL进行编码。例如,下面是我的代码片段: QString GetJsonStringFromURL(QString url) //url == "192.168.0.111/controller?POSITION|03|100" { QEventLoop eventLoop; QNetworkAccessManager mgr; QObject::connect(&mgr,

QT:我想知道是否有一种方法可以从字符串创建一个QUrl或另一个URL类对象,而无需对最终URL进行编码。例如,下面是我的代码片段:

QString GetJsonStringFromURL(QString url) //url == "192.168.0.111/controller?POSITION|03|100"
{
    QEventLoop eventLoop;
    QNetworkAccessManager mgr;
    QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit()));  

    QNetworkRequest req( QUrl::fromUserInput(url) ) ; 

    QNetworkReply *reply = mgr.get(req);
    eventLoop.exec(); //wait till reply finished
    QString strReply = reply->readAll();
    return strReply;
}
这段代码访问一个局域网控制器,通过get方法请求它的json,同时在url中传递一个参数。我传递的url的编码百分比为:

“192.168.0.111/控制器?位置%7C03%7C100”


这是我试图避免的。我试图访问的服务器是一个定制的硬件,固件是用C编写的,不包含百分比解码。我希望避免在服务器端进行维护。我已经尝试过使用QUrl类引用,但是没有一个可用的方法提供了想要的结果

Qurl具有解码功能。查看QUrl::decode(),否则在使用QUrl::fromPercentEncoding(url.toEncoded())传递时可以阻止编码,但如果有复杂的查询字符串,则可能会丢失一些字符串完整性


我个人没有使用过这个,但我想我会发布,因为你提到你在课堂参考中找不到任何东西

这在
QNetworkRequest
中是不可能的,因为每个请求都需要一个QUrl对象,该对象存储目标并在内部转换为编码字符串

不适用于您,因为它可以设置除URL之外的所有HTTP头,URL是GET请求的一部分

确认原始HTTP头格式
curl-vhttp://stackoverflow.com/questions/

GET /questions/ HTTP/1.1
User-Agent: curl/7.37.1
Host: stackoverflow.com
Accept: */*

因此,您需要一个完全未经加工的(我没有经验)。

我见过这些方法,并对它们进行了测试,但没有一个提供了想要的结果:(我现在已经尝试使用fromPercentEncoding,但字符串仍然被再次编码。我猜这个Url格式是网络类所必需的,这就是为什么它不允许错误格式的原因。谢谢,经过两天的研究,我放弃了这个,改换非标准Url,因为无论我怎么尝试,QUrl类似乎都是对的使用标准url约定对字符串进行解析和编码。很好:)然后我将感谢您的支持并接受此答案。我已经接受了答案,但我的代表太低太支持:)