C # WebRequest.getResponse (): 400 Bad Request

Estoy tratando de descargar un archivo desde un servidor usando System.Web. En realidad funciona, pero algunos enlaces me dan problemas. Los enlaces se ven así:

<code>http://cdn.somesite.com/r1KH3Z%2FaMY6kLQ9Y4nVxYtlfrcewvKO9HLTCUBjU8IBAYnA3vzE1LGrkqMrR9Nh3jTMVFZzC7mxMBeNK5uY3nx5K0MjUaegM3crVpFNGk6a6TW6NJ3hnlvFuaugE65SQ4yM5754BM%2BLagqYvwvLAhG3DKU9SGUI54UAq3dwMDU%2BMl9lUO18hJF3OtzKiQfrC/the_file.ext
</code>

El código se ve básicamente así:

<code>HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link);
WebResponse response = request.getResponse();
</code>

getResponse () siempre lanza una excepción (Error 400 Solicitud incorrecta). Sin embargo, sé que el enlace funciona porque puedo descargar el archivo con Firefox sin problemas.

También intenté descifrar el enlace con Uri.UnescapeDataString (enlace), pero ese enlace ni siquiera funciona en Firefox.

Otros enlaces funcionan perfectamente bien de esta manera ... simplemente estos no funcionarán.

Editar:

Bien, encontré algo usando wireshark:

Si abro el enlace usando Firefox, este es enviado:

<code>&ME3@"dM*PNyAo PA:]GET /r1KH3Z%2FaMY6kLQ9Y4nVxYp5DyNc49t5kJBybvjbcsJJZ0IUJBtBWCgri3zfTERQught6S8ws1a%2BCo0RS5w3KTmbL7i5yytRpn2QELEPUXZTGYWbAg5eyGO2yIIbmGOcFP41WdrFRFcfk4hAIyZ7rs4QgbudzcrJivrAaOTYkEnozqmdoSCCY8yb1i22YtEAV/epd_outpost_12adb.flv HTTP/1.1
Host: cdn.somesite.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
</code>

Creo que solo la primera línea es el problema, porque WebRequest.Create (enlace) decodifica la url:

<code>&MEz.@!dM/nP9@~P>.GET /r1KH3Z/aMY6kLQ9Y4nVxYp5DyNc49t5kJBybvjbcsJJZ0IUJBtBWCgri3zfTERQught6S8ws1a%2BCo0RS5w3KTmbL7i5yytRpn2QELEPUXZTGYWbAg5eyGO2yIIbmGOcFP41WdrFRFcfk4hAIyZ7rs6Mmh1EsQQ4vJVYUwtbLBDNx9AwCHlWDfzfSWIHzaaIo/epd_outpost_12adb.flv HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0
Host: cdn.somesite.com
</code>

(% 2F se reemplaza con /)

Otra edición:

Descubrí que la clase Uri decodifica la url automáticamente: Uri uri = new Uri (enlace); // el enlace no está descodificado Debug.WriteLine (uri.ToString ()); // enlace se decodifica aquí.

¿Cómo puedo prevenir esto?

Gracias de antemano por tu ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta