我在使用libCurl执行FTP操作之前使用此代码设置HTTP代理地址,我尝试连接的FTP服务器位于互联网(S& P的服务器)
curl_easy_setopt(m_pCURLSession, CURLOPT_PROXY, m_strProxy); //m_strProxy is a CString object having the overloading of the cast operator (const char*) so no problems here !
curl_easy_setopt(m_pCURLSession, CURLOPT_HTTPPROXYTUNNEL, 1);
相同的代码对HTTP操作没有问题!
我的HTTP代理服务器(使用FreeProxy创建)适用于WinSCP,有时适用于FileZilla。
问题如下,如果HTTP代理位于另一台机器上,我收到此cURL错误:
错误= 55向对等方发送数据失败
当我将HTTP代理放在同一台机器上时,我收到了这个错误:
(错误= 56 |从对等方接收数据时失败)!
当我删除此说明时:
curl_easy_setopt(m_pCURLSession, CURLOPT_HTTPPROXYTUNNEL, 1);
当我请求FTP远程直接列表时,我收到一个奇怪的回复,我收到一个无用的HTML响应....而我期待一个由"\r\n"
分隔的文件/文件夹名称列表,就像我不喜欢使用代理。
答案 0 :(得分:0)
解决方案很简单但不明显:首先升级到最新的libcURL版本,因为在旧版本中存在与通过HTTP代理进行FTP隧道相关的已知错误,然后使用此选项:
curl_easy_setopt(m_pCURLSession, CURLOPT_FTP_USE_EPSV, 0);