Загрузка файла FTP с HTTP прокси - PullRequest
20 голосов
/ 02 октября 2008

Есть ли способ загрузить файл на FTP-сервер за HTTP-прокси?

Кажется, что загрузка файла не поддерживается за HTTP-прокси с использованием .Net Webclient. (http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.proxy.aspx).

Если нет обходного решения? Если нет, знаете ли вы хорошую и бесплатную библиотеку FTP, которую я могу использовать?

Редактировать : К сожалению, у меня нет FTP-прокси для подключения.

Ответы [ 13 ]

0 голосов
/ 14 ноября 2013

Я не уверен, что все HTTP прокси работают одинаково, но мне удалось обмануть наш, просто создав HTTP-запрос на доступ к ресурсу по URI ftp: // user: pass@your.server. ком / путь .

К сожалению, для создания экземпляра HttpWebRequest вы должны использовать WebRequest.Create. И если вы сделаете это, вы не сможете создать HTTP-запрос для схемы ftp: //.

Итак, я использовал немного размышлений, чтобы вызвать непубличный конструктор, который делает это:

var ctor = typeof(HttpWebRequest).GetConstructor(
    BindingFlags.NonPublic | BindingFlags.Instance, 
    null, 
    new Type[] { typeof(Uri), typeof(ServicePoint) }, 
    null);
var req = (WebRequest)ctor.Invoke(new object[] { new Uri("ftp://user:pass@host/test.txt"), null });
req.Proxy = new WebProxy("myproxy", 8080);
req.Method = WebRequestMethods.Http.Put;

using (var inStream = req.GetRequestStream())
{
    var buffer = Encoding.ASCII.GetBytes("test upload");
    inStream.Write(buffer, 0, buffer.Length);
}

using (req.GetResponse())
{
}

Вы также можете использовать другие методы, такие как «УДАЛИТЬ» для других задач.

В моем случае это сработало как шарм.

0 голосов
/ 04 сентября 2009

У меня только что была такая же проблема.

Моей основной целью было загрузить файл на FTP. И мне было все равно, будет ли мой трафик проходить через прокси или нет.

Итак, я просто установил для свойства FTPWebRequest.Proxy значение null сразу после FTPWebRequest.Create (uri).

И это сработало. Да, я знаю, что это решение не самое лучшее. И более того, я не понимаю, почему это работает. Но цель в любом случае достигнута.

0 голосов
/ 02 октября 2008

Я действительно не вижу связи между http-прокси и загрузкой на FTP-сервер. Если вы используете прокси-класс http, то для доступа к ресурсам http через прокси-сервер http. ftp - другой протокол, и прокси-серверы ftp используют другой протокол.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...