Richtige Methode zum Behandeln des kaufmännischen Und-Zeichens in JSON-Zeichenfolgen, die an den REST-Webdienst gesendet werden
OK,
Ich benutze dieSystem.Runtime.Serialization
und dasDataContractJsonSerialization
.
Das Problem ist, dass ich in der Anfrage einen Wert einer Eigenschaft mit dem sende&
Charakter. Sagen,AT&T
und ich erhalte eine Antwort mit Fehler:Invalid JSON Data
.
Ich dachte, dass die Flucht innerhalb der Bibliothek erfolgen würde, aber jetzt sehe ich, dass die Serialisierung vom kaufmännischen Und unberührt bleibt&
Charakter.
Ja, für ein JSON-Format ist dies gültig. Aber es wird ein Problem für meine POST-Anfrage sein, da ich dies an einen Server senden muss, der, wenn er ein kaufmännisches Und enthält, fehlerhaft antwortet, daher bin ich hier.
HttpUtility.HtmlEncode
ist in demSystem.Web
Bibliothek und so ist der Weg zu gehen mitUri.EscapeUriString
. Ich habe dies versucht, aber trotzdem, und ohne es funktionieren alle Anfragen gut, außer ein kaufmännisches Und ist in einem Wert.
BEARBEITEN:HttpUtility
class ist auf das Windows Phone SDK portiert, die bevorzugte Methode zum Codieren einer Zeichenfolge sollte jedoch weiterhin bestehen bleibenUri.EscapeUriString
.
Der erste Gedanke war, sich die Hände schmutzig zu machen und das Sonderzeichen zu ersetzen, das ein Problem auf dem Server verursachen würde. Aber, ich frage mich, gibt es eine andere Lösung, die ich tun sollte, dass es effizient und 'richtig' wäre?
Ich sollte sagen, dass ich benutze
// Convert the string into a byte array.
byte[] postBytes = Encoding.UTF8.GetBytes(data);
So konvertieren Sie den JSON in einenbyte[]
und schreibe an dieStream
. Und,
request.ContentType = "application/x-www-form-urlencoded";
Als dieWebRequest.ContentType
.
Bin ich aus einem Grund durcheinander oder etwas, das ich vermisse?
Vielen Dank.