C # WebRequest.getResponse (): 400 ungültige Anforderung

Ich versuche, eine Datei mit System.Web von einem Server herunterzuladen. Es funktioniert tatsächlich, aber einige Links bereiten mir Probleme. Die Links sehen so aus:

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

Der Code sieht im Grunde so aus:

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

getResponse () löst immer eine Ausnahme aus (Fehler 400 Bad Request). Ich weiß jedoch, dass der Link funktioniert, da ich die Datei mit Firefox problemlos herunterladen kann.

Ich habe auch versucht, den Link mit Uri.UnescapeDataString (link) zu dekodieren, aber dieser Link funktioniert nicht einmal in Firefox.

Andere Links funktionieren auf diese Weise einwandfrei. Nur funktionieren diese nicht.

Bearbeiten:

Okay, ich habe mit Wireshark etwas herausgefunden:

Wenn ich den Link mit Firefox öffne, wird folgendes gesendet:

<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>

Ich denke nur die erste Zeile ist das Problem, weil WebRequest.Create (link) die URL dekodiert:

<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 wird ersetzt durch /)

Eine andere Bearbeitung:

Ich habe herausgefunden, dass die Uri-Klasse die URL automatisch entschlüsselt: Uri uri = new Uri (link); // Link ist nicht dekodiert Debug.WriteLine (uri.ToString ()); // Link wird hier dekodiert.

Wie kann ich das verhindern?

Vielen Dank im Voraus für Ihre Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage