Właściwy sposób obsługi znaku ampersand w łańcuchu JSON wysyłanym do usługi WWW REST
DOBRZE,
UżywamSystem.Runtime.Serialization
iDataContractJsonSerialization
.
Problem polega na tym, że we wniosku wysyłam wartość nieruchomości za pomocą&
postać. Mówić,AT&T
i otrzymuję odpowiedź z błędem:Invalid JSON Data
.
Pomyślałem, że ucieczka zostanie wykonana wewnątrz biblioteki, ale teraz widzę, że serializacja pozostała nietknięta w ampersand&
postać.
Tak, dla formatu JSON jest to ważne. Ale będzie to problem z moim żądaniem POST, ponieważ muszę wysłać to do serwera, który zawiera ampersand i odpowie z błędem, stąd jestem.
HttpUtility.HtmlEncode
jest wSystem.Web
biblioteka i tak dalejUri.EscapeUriString
. Zrobiłem to, aby spróbować, ale w każdym razie i bez tego wszystkie żądania działają poprawnie, z wyjątkiem ampersandu w wartości.
EDYTOWAĆ:HttpUtility
klasa jest przenoszona do zestawu Windows Phone SDK, ale preferowany sposób kodowania łańcucha powinien być nieruchomyUri.EscapeUriString
.
Pierwszą myślą było zabrudzenie rąk i rozpoczęcie zastępowania specjalnego znaku, który powodowałby problem na serwerze, ale zastanawiam się, czy jest inne rozwiązanie, które powinienem zrobić, żeby było wydajne i „właściwe”?
Powinienem powiedzieć, że używam
// Convert the string into a byte array.
byte[] postBytes = Encoding.UTF8.GetBytes(data);
Aby przekonwertować JSON na abyte[]
i napisz doStream
. I,
request.ContentType = "application/x-www-form-urlencoded";
JakoWebRequest.ContentType
.
Więc jestem zawalony z jakiegoś powodu lub czegoś, za czym tęsknię?
Dziękuję Ci.