我创建了一个通过http协议下载文件的下载程序。 我使用QNetworkAccessManager / QNetworkReply / QNetworkRequest类来实现这一目标。
QNetworkReply文档中列出了几个错误代码 - 其中一个是错误代码99,这是“与网络无关的未知错误。”
在我的开发机器上,每当我使用该应用程序启动下载时,它都会顺利下载,并且我没有收到任何错误代码99。
当我部署我的应用程序并在没有安装Qt的另一台PC上进行测试时,当我启动下载时,我立即得到错误代码99;但是,使用QNetworkAccessManager类的其他函数工作得很好,即使在其环境中没有Qt的PC上也是如此(例如http POST方法)。
我还使用与OS X完全相同的代码部署了这个应用程序,并且它的部署版本没有得到任何错误代码99,并且一切正常。
我有没有理由在没有Qt开发环境的PC系统上遇到与网络相关的未知错误?
我检查了所有依赖项等的依赖者 - walker。我有点不知所措,不知道如何继续。
答案 0 :(得分:1)
问题是QtNetwork API显然使用OpenSSL进行某些操作。这在Qt Docs中并不是非常清楚。有一个SSL支持类,我认为如果我使用该类,我只需要包含SSL DLL,而不是QNetworkAccessManager:
http://qt-project.org/doc/qt-5/ssl.html
它在我的开发机器上工作的原因是因为OpenSSL DLL在我的PATH变量上。
在应用程序目录中包含OpenSSL DLL修复了问题。