C++ QT:QUrl,无百分比编码
QT:我想知道是否有一种方法可以从字符串创建一个QUrl或另一个URL类对象,而无需对最终URL进行编码。例如,下面是我的代码片段: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,
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约定对字符串进行解析和编码。很好:)然后我将感谢您的支持并接受此答案。我已经接受了答案,但我的代表太低太支持:)