3

场景:
我正在我的应用程序中实现一个FTP 获取功能,它使用Qt 4.7.x
Qt 文档声明QFtp已弃用,改为使用 QNetworkAccessManager,所以我正在这样做;)
我测试了我写的代码有一些 FTP 服务器,它似乎工作正常。

问题:
当我使用我的 ftp get 类连接到本地、自制(并且非常简单)的 ftp 服务器时,我收到以下错误:请求:500 无可用帮助。我使用tcpdump 跟踪了 ftp 通信,实际上我看到QNetworkAccessManager/QNetworkRequest一旦获得230 User Logged In就会向服务器发送一个HELP动词

不幸的是,我的服务器不支持。现在有没有办法配置 Qt 不发送 HELP 动词?在线阅读所涉及课程的 Qt Doc 并没有帮助。

4

2 回答 2

3

它是不可配置的。您可以在此处查看正在发生的事情的源代码:http: //qt.gitorious.org/qt/qt/blobs/4.7/src/network/access/qnetworkaccessftpbackend.cpp#line300

如果您可以构建自己的 Qt 版本,那么它很容易被压制。但升级 FTP 服务器以支持 HELP 命令可能更容易。

于 2012-05-07T13:58:29.130 回答
3

除非您想重新实现 FTP 后端,否则可能无法避免这种情况。通过浏览FTP后端的源代码,可以发现发送HELP命令的目的是查看服务器是否支持“SIZE”和“MDTM”命令。

可能最简单的解决方案是在您的 FTP 服务器中为 HELP 命令实现一个最小处理程序,该处理程序以适当的 200/211/214 响应进行响应。

编辑:请参阅http://qt.gitorious.org/qt/qt/blobs/4.8/src/network/access/qnetworkaccessftpbackend.cpp#line350了解后端对响应的期望。这并不复杂。

于 2012-05-07T14:00:19.567 回答