Ich versuche, eine URL-codierte Post an eine REST-API in PHP zu senden. Die POST-Daten enthalten zwei Benutzer bereitgestellten Strings:Wie URL-codierte Daten in POST mit HttpWebRequest zu umgehen
WebRequest request = HttpWebRequest.Create(new Uri(serverUri, "rest"));
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.Headers.Add("Content-Transfer-Encoding", "binary");
// Form the url-encoded credentials we'll use to log in
StringBuilder builder = new StringBuilder();
builder.Append("user=");
builder.Append(user);
builder.Append("&password=");
builder.Append(password);
byte[] credentials = Encoding.UTF8.GetBytes(builder.ToString());
// Write the url-encoded post data into the request stream.
request.ContentLength = credentials.Length;
using (Stream requestStream = request.GetRequestStream()) {
requestStream.Write(credentials, 0, credentials.Length);
}
Dieser sendet eine HTTP-Anfrage an den Server user=myusername&password=mypassword
in UTF-8 als POST-Daten enthält.
Wie kann ich die vom Benutzer bereitgestellten Strings umgehen? Zum Beispiel, wenn ich einen Benutzer mit dem Namen big&mean
hätte, wie sollte das kaufmännische Undsand escaped werden, damit es die Anforderungszeile nicht durcheinanderbringt?
Dank! Wenn ich diese Methode für einen String verwende, der UTF-8-Zeichen enthält, z. B. ein deutsches s-z, wird das UTF-8-Code-Paar in '% c3% 9f' umgewandelt. Ich nehme an, dass das 'Content-Transfer-Encoding' nun auf' 7bit' gesetzt sein sollte? – Cygon
Einer der Parameter, die Sie mit HttpUtility.UrlEncode bereitstellen können, ist die Codierung. Die nach dem '%' verwendeten Zeichenzahlen hängen von der Codierung ab. – pauloya