No estoy seguro de si todos los proxies HTTP funcionan de la misma manera, pero logré engañar a los nuestros simplemente creando una solicitud HTTP para acceder al recurso en URI ftp://user:[email protected]/path.
Lamentablemente, para crear una instancia de HttpWebRequest debe usar WebRequest.Create. Y si lo hace, no puede crear una solicitud HTTP para ftp: // schema.
por lo que utiliza un poco de reflexión para invocar un constructor no pública, que hace eso:
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:[email protected]/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())
{
}
También puede utilizar otros métodos como "BORRAR" para otras tareas.
En mi caso, funcionó a las mil maravillas.
¿Estás seguro de que su empresa no tiene un proxy FTP también? – VVS
Tengo el mismo problema. ¿Encontraste una solución? –
Y si lo hizo, ¿qué tipo de licencia era? Una distribución de fuente sería agradable. –