Правильный способ обработки символа амперсанда в строке JSON, отправляемой в веб-сервис REST
в порядке,
Я используюSystem.Runtime.Serialization
иDataContractJsonSerialization
.
Проблема в том, что в запросе я отправляю значение свойства с&
характер. Сказать,AT&T
и я получаю ответ с ошибкой:Invalid JSON Data
.
Я думал, что побег будет происходить внутри библиотеки, но теперь я вижу, что сериализация осталась без изменений&
характер.
Да, для формата JSON это действительно. Но это будет проблемой для моего запроса POST, так как мне нужно отправить его на сервер, который, если содержит амперсанд, ответит с ошибкой, поэтому я здесь.
HttpUtility.HtmlEncode
находится вSystem.Web
библиотека и поэтому путь используетUri.EscapeUriString
, Я сделал это, чтобы попробовать, но в любом случае, и без него все запросы работают нормально, за исключением амперсанда в значении.
РЕДАКТИРОВАТЬ:HttpUtility
класс перенесен в Windows Phone SDK, но предпочтительный способ кодирования строки должен бытьUri.EscapeUriString
.
Первой мыслью было испачкать руки и начать заменять специальный символ, который вызвал бы проблему на сервере, но, мне интересно, есть ли другое решение, которое я должен сделать, чтобы это было эффективно и «правильно»?
Я должен сказать, что я использую
// Convert the string into a byte array.
byte[] postBytes = Encoding.UTF8.GetBytes(data);
Чтобы преобразовать JSON вbyte[]
и написать вStream
, А также,
request.ContentType = "application/x-www-form-urlencoded";
КакWebRequest.ContentType
.
Итак, я напутал по какой-то причине или что-то упустил?
Спасибо.