gpt4 book ai didi

c++ - QT:没有百分比编码的 QUrl

转载 作者:行者123 更新时间:2023-11-28 02:38:04 24 4
gpt4 key购买 nike

QT:我想知道是否有一种方法可以在不对最终 URL 进行编码的情况下从字符串创建 QUrl 或另一个 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;
}

此代码访问局域网 Controller ,使用 get 方法请求它的 json,同时在 url 中传递参数。我传递的 url 将百分比编码为:

“192.168.0.111/ Controller ?POSITION%7C03%7C100”

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

最佳答案

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

setRawHeader对您不起作用,因为它可以设置除 URL 之外的所有 HTTP header ,这是 GET 请求的一部分。

确认原始 HTTP header 格式 curl -v http://stackoverflow.com/questions/

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

因此你需要一个完全原始的 socket connection (我没有这方面的经验)。

关于c++ - QT:没有百分比编码的 QUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26859757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com