barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

четверг, 20 октября 2011 г.

Error processing POST request: Transport level information does not match with SOAP Message namespace URI

WSO2ESB (а точнее, лежащий в её основе Apache Axis2) при поступлении входящего сообщения пытается определить используемую сообщением версию протокола SOAP (1.1 или 1.2). Делает он это 2 способами:
  1. На основании пространства имен SOAP envelope, которое равно "http://schemas.xmlsoap.org/soap/envelope/" для вресии 1.1 и "http://www.w3.org/2003/05/soap-envelope" для 1.2
  2. На основании HTTP-заголовка в случае, если нижележащим протоколом является HTTP. Для SOAP 1.1 должен присутствовать заголовок SOAPAction, для 1.2 может присутствовать параметр SOAPAction внутри заголовка Content-type.
В случае, если полученные в результате этих двух проверок протоколы не совпадают, генерируется ошибка "Transport level information does not match with SOAP Message namespace URI".
Похожая проверка выполняется для ответов, получаемых от внешних сервисов. Выполняется сопоставление пространства имен SOAP-конверта и HTTP-заголовка Content-Type. Для пространства имен SOAP 1.1 ожидается Content-Type "text/xml", для SOAP 1.2 - "application/soap+xml". В случае несовпадения также генерируется ошибка "Transport level information does not match with SOAP Message namespace URI".

Комментариев нет:

Отправить комментарий