无法通过QNetworkAccessManager获取网址(结果与我在浏览器中看到的不同)

时间:2015-05-25 11:26:19

标签: c++ qt qnetworkaccessmanager qnetworkrequest qnetworkreply

我在项目中使用QT 4.8.2。 我的问题是QTNetworkAccess无法正确获取我的网址(或解码)。 如果我将我的网址粘贴到浏览器,我会看到浏览器中的结果与我在结果中看到的结果不同(QNetworkreply)。

这是我需要获得的示例网址: * https://myhost/folder/folder/rss?cn1%5B0%5D=Web%2C+Mobile+%26+Software+Dev&cn2%5B0%5D=Web+Development

或者,没有urlencode: ** https://myhost/folder/folder/rss?cn1[]=Web%2C+Mobile+%26+Software+Dev&cn2[]=Web+Development

我尝试将QUrl作为*和**传递。

这是我的代码:

networkAccess = new QNetworkAccessManager();
connect (networkAccess, SIGNAL (finished(QNetworkReply*)), this, SLOT (h_networkAccess(QNetworkReply*)));

request = new QNetworkRequest(QUrl(settings->get()->rss_link));
request->setRawHeader("User-Agent",      "Mozilla/5.0 (Windows NT 5.1; rv:37.0) Gecko/20100101 Firefox/37.0");
request->setRawHeader("Accept",          "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
request->setRawHeader("Accept-Encoding", "deflate");
request->setRawHeader("Connection",      "keep-alive");
if (settings->get()->cookie != "")
    request->setRawHeader("Cookie",      settings->get()->cookie.toAscii()); 

networkAccess->get(*request);

也许,我的问题是" +"网址中的符号...但我不知道。 我可以提供我需要测试的完整链接。

请帮助。

1 个答案:

答案 0 :(得分:0)

如果您的网址已经过编码,请使用QUrl::fromEncoded 来自doc:

  

解析输入并返回相应的QUrl。假设输入   采用编码形式,仅包含ASCII字符。