Подтвердить что ты не робот

Поддерживает ли веб-службы SOAP только http-метод "POST"

Я столкнулся с этим вопросом на одном из интервью, поэтому не могли бы вы рассказать, поддерживает ли веб-службы SOAP только http-метод "POST" или есть способ принять другие методы на стороне сервера?

4b9b3361

Ответ 1

Я всегда использовал POST, но в соответствии со стандартом W3C, SOAP поддерживает методы POST и GET.

Изменить: после некоторых исследований кажется, что это не совсем так, как вы можете видеть здесь. Теоретически можно использовать GET, потому что POST и GET являются методами транспортного протокола HTTP, а SOAP можно использовать через HTTP.

Но, как вы знаете, GET включает запрос в строку запроса. Запросы SOAP (XML-сообщения) обычно слишком сложны и подробны для включения в строку запроса, поэтому почти каждая реализация (например, JAX-WS) поддерживает только POST.

Ответ 2

Тема три года, но я думаю, что будет еще много людей, которые будут давать этот вопрос самому себе и найдут неправильный ответ в Интернете. Ответ на вопрос нет, метод GET также может быть использован.

Согласно спецификации SOAP, которую можно найти здесь: https://www.w3.org/TR/2007/REC-soap12-part0-20070427/#transport оба метода GET и POST могут использоваться для обмена сообщениями SOAP через http. Использование метода HTTP POST для передачи сообщений SOAP в телах HTTP-запроса использует шаблон, называемый шаблоном обмена сообщениями запроса-ответа SOAP. В случае HTTP GET используется шаблон, называемый шаблоном обмена сообщениями ответа SOAP. Основное отличие этих двух шаблонов:

Первый тип взаимодействия позволяет использовать данные в теле HTTP POST для создания или изменения состояния ресурса, идентифицированного URI, которому предназначен HTTP-запрос. Второй тип шаблона взаимодействия дает возможность использовать HTTP-запрос GET для получения представления ресурса без какого-либо изменения его состояния. В первом случае специфический для SOAP аспект заключается в том, что тело HTTP POST-запроса является SOAP-сообщением, которое должно быть обработано (по модели обработки SOAP) в качестве части обработки приложения, необходимой для соответствия семантика POST. Во втором случае типичное использование, которое предвидится, - это случай, когда представление запрашиваемого ресурса возвращается не как HTML, а вообще-то, общий XML-документ, а как сообщение SOAP. То есть заголовок заголовка HTTP-сообщения ответного сообщения идентифицирует его как тип носителя "application/soap + xml"

Таким образом, можно использовать методы GET и POST. Другие считают, что на практике используется метод POST.

Плохо, что при сравнении сервисов RESTfull с сервисами SOAP в качестве преимущества REST-пользователей происходит кэширование, которое недоступно в SOAP, поскольку SOAP использует только POST. Это абсолютно неправильно.