Auf der MSDN-Site gibt es ein Beispiel für einen C # -Code , der zeigt, wie man vorgeht eine Web-Anfrage mit POST-Daten. Hier ist ein Auszug aus diesem Code:
%Vor% Die mit (*)
markierte Zeile ist die Zeile, die mich verwirrt. Sollten die Daten nicht mit der UrlEncode-Methode und nicht mit UTF8 codiert werden? Ist das nicht application/x-www-form-urlencoded
impliziert?
Der Beispielcode ist irreführend, da ContentType auf application / x-www-form-urlencoded gesetzt ist, der eigentliche Inhalt jedoch reiner Text ist. application / x-www-form-urlencoded ist ein String wie dieser:
%Vor%Die UrlEncode-Funktion wird verwendet, um spezielle Zeichen wie '& amp;' und '=', so dass ein Parser sie nicht als Syntax betrachtet. Sie benötigt eine Zeichenfolge (Medientyp text / plain) und gibt eine Zeichenfolge zurück (Medientyp application / x-www-form-urlencoded).
Encoding.UTF8.GetBytes wird verwendet, um den String (Medientyp application / x-www-form-urlencoded in unserem Fall) in ein Array von Bytes zu konvertieren, was die WebRequest API erwartet.
Wie Max Toro angegeben hat, sind die Beispiele auf der MSDN-Site falsch: Ein korrekter Formular-POST erfordert, dass die Daten URL-codiert sind. Da die Daten im MSDN-Beispiel keine Zeichen enthalten, die durch die Codierung geändert würden, sind sie in gewisser Weise bereits codiert.
Der korrekte Code würde einen System.Web.HttpUtility.UrlEncode
-Aufruf für die Namen und Werte jedes Name / Wert-Paares haben, bevor sie in die name1=value1&name2=value2
-Zeichenkette kombiniert werden.
Diese Seite war hilfreich: Ссылка