Правильный способ обработки символа амперсанда в строке 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
Итак, я напутал по какой-то причине или что-то упустил?
Спасибо.