在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
谢谢!