QUrl和QNetworkReply错误

时间:2015-03-21 08:44:35

标签: qt network-programming qnetworkaccessmanager qnetworkrequest qnetworkreply

在Windows 8.1(64位)上使用Qt 5.4 32位和MingW。

我遇到了一个奇怪的问题。考虑一下:

//QString m_sUrl = "cloud.mysystem.info/";
//QString m_sFileName = "results.html";
//QNetworkAccessManager m_Manager;

QUrl url(m_sURL + m_sFileName);
url.setScheme("ftp");
url.setUserName(m_sLogin);
url.setPassword(m_sPassword);

QFile *file = new QFile(m_sFileName);

if(file->open(QIODevice::ReadOnly))
{
    QNetworkReply *reply = m_Manager.put(QNetworkRequest(url), file);

    connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error), this, &OCMResults::error);
    connect(reply, &QNetworkReply::finished, reply, &QObject::deleteLater);
    connect(reply, &QNetworkReply::finished, file, &QObject::deleteLater);
}
else
    file->deleteLater();

起初我的代码工作正常,但随后它停止工作(可能是由于我的更改,不知道它是什么),只有解决方法是当我明确地写下url时:

QNetworkReply(QUrl("ftp://" + m_sLogin + ":" + m_sPassword + "@" + m_sURL + m_sFileName)), file);

生成的URL完全相同但由于某种原因,当我事先创建它并将其传递给QNetworkReply时,它不会接受它:

reply.url().host()
如果是这种情况,那么

就不会产生任何结果。我觉得我错过了一些非常明显的东西......

错误是:

3 (host not found) when ftp is specified in the url string
301 (unknown protocol) when I do not specify it in the url but specify it as setScheme("ftp") instead

谢谢!

0 个答案:

没有答案