Если SOAP - это основанный на XML протокол, используемый WebServices, почему служба .asmx возвращает JSON? - PullRequest
0 голосов
/ 04 апреля 2011

Я запутался в одном. Как я уже читал, веб-сервисы используют протокол SOAP для связи, и это протокол на основе XML; Я ожидал, что классический метод HelloWorld в веб-службе asp.net вернет данные на основе XML.

Но когда я проверил с помощью Fiddler, я увидел, что в текстовом представлении ответа вместо строки XML есть строка JSON, например:

{"d": "Hello World"}

Означает ли это, что реализация веб-службы asp.net возвращает строковые типы, внедренные в качестве значения свойства с именем 'd'?

Ответы [ 4 ]

2 голосов
/ 04 апреля 2011

Веб-сервисам не нужно использовать SOAP в качестве протокола.WCF позволяет вам использовать все виды протоколов для ваших веб-сервисов.SOAP и JSON - это всего лишь два варианта.

1 голос
/ 04 апреля 2011

Службы ASMX возвращают JSON, если вы запрашиваете их через POST, с типом содержимого, содержащим application/json.Более подробная информация здесь: http://encosia.com/2010/03/03/asmx-and-json-common-mistakes-and-misconceptions/

Их возвращаемое значение не ограничивается только строками.Если вы вернете тип коллекции, вы получите массив JSON.Если вы вернете серверный класс, он будет сериализован в правильные пары ключ / значение JSON для представления этого объекта.

.d является своего рода ортогональной проблемой.Это функция безопасности, позволяющая предотвратить конкретную атаку на конструктор массива JavaScript.Подробнее здесь: http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

0 голосов
/ 04 апреля 2011

Как вы можете видеть здесь Ответы JSON поддерживаются последними выпусками .NET Framework.

0 голосов
/ 04 апреля 2011

Хорошо.Я нашел свой ответ здесь:

"ASP.NET AJAX отправляет сообщения JSON в веб-службы, в отличие от стандартных вызовов протокола SOAP, обычно связанных с веб-службами. Это приводит к меньшему запросу иобщее количество ответных сообщений. Кроме того, обеспечивается более эффективная обработка данных на стороне клиента, поскольку библиотека ASP.NET AJAX JavaScript оптимизирована для работы с объектами JSON. "

Подробнее см. http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services

...