有没有办法在HTTP代理后面将文件上传到FTP服务器?
似乎使用.Net Webclient在HTTP代理后面不支持上传文件.(http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.proxy.aspx).
如果没有解决方法?如果没有,你知道我可以使用一个好的免费FTP库吗?
编辑:不幸的是,我没有任何FTP代理连接.
在活动FTP模式下,服务器启动与客户端的数据连接.如果客户端在HTTP代理后面,这显然不起作用.在被动FTP模式下,客户端启动初始连接和数据连接.由于HTTP代理可以隧道传输任意传出TCP连接(使用CONNECT方法),因此应该可以通过HTTP代理以被动模式访问FTP服务器.
在FtpWebRequest似乎支持被动模式.但是,我不明白为什么支持文件下载和目录列表,而文件上载也使用相同的数据连接.
你是否确认FtpWebRequest配置为被动模式不能通过HTTP代理工作,目录列表/文件下载工作正常?
大多数FTP代理在连接上做他们的事情,所以如果你没有代理,你这样做:
使用FTP代理,您可以:
它只是从那里开始工作.通过squid代理,我正在使用这个正确的第二个(尝试调试某些东西).
...但是因为你没有FTP代理....
你有SOCKS代理吗?这可能会奏效,但我不知道.NET是否可以做到这一点.否则,说实话,我觉得你被卡住了!与HTTP相比,FTP是一种"奇怪的"协议,因为它有一个控制通道(端口21)和一个数据通道(或多个,在随机端口上),所以通过代理进入是有趣的.至少说!
我们的Rebex FTP/SSL可以使用HTTP代理.它不是免费的,但......
// initialize FTP client
Ftp client = new Ftp();
// setup proxy details
client.Proxy.ProxyType = FtpProxyType.HttpConnect;
client.Proxy.Host = proxyHostname;
client.Proxy.Port = proxyPort;
// add proxy username and password when needed
client.Proxy.UserName = proxyUsername;
client.Proxy.Password = proxyPassword;
// connect, login
client.Connect(hostname, port);
client.Login(username, password);
// do some work
// ...
// disconnect
client.Disconnect();
Run Code Online (Sandbox Code Playgroud)
Vas*_*sil -5
我并没有真正看到 http 代理和上传到 ftp 服务器之间的连接。如果您使用 http 代理类,则可以通过 http 代理访问 http 资源。ftp 是另一种协议,ftp 代理使用不同的协议。
| 归档时间: |
|
| 查看次数: |
42305 次 |
| 最近记录: |