Последние учебники веб-разработки
×

XML Руководство

XML ГЛАВНАЯ XML Введение XML Как использовать XML дерево XML Синтаксис XML элементы XML Атрибуты XML Пространства имен XML дисплей XML XSLT XML XPath XML XLink XML Оценщик XML DTD XML схема XML сервер XML Приложения XML Примеры XML викторина XML сертификат

XML DOM

DOM вступление DOM Вершины DOM XMLHttpRequest DOM Доступ к DOM Узел информация DOM Список узлов DOM Пересекая DOM навигационный DOM Получить значения DOM Change Вершины DOM Remove Вершины DOM Replace Вершины DOM Create Вершины DOM Add Вершины DOM Clone Вершины DOM Примеры

DOM Справка

DOM Типы узлов DOM Узел DOM NodeList DOM NamedNodeMap DOM Документ DOM Элемент DOM Атрибут DOM Текст DOM CDATA DOM Комментарий DOM XMLHttpRequest DOM синтаксический анализатор

XML DTD

DTD вступление DTD Строительные блоки DTD элементы DTD Атрибуты DTD Элементы против Attr DTD юридические лица DTD Примеры

XSD Schema

XSD вступление XSD Как XSD <schema> XSD элементы XSD Атрибуты XSD ограничения

XSD Сложный

XSD элементы XSD пустой XSD Элементы только XSD Только текст XSD смешанный XSD индикаторы XSD <any> XSD <anyAttribute> XSD подмена XSD пример

XSD Data

XSD строка XSD Дата XSD числовой XSD Разное XSD Справка

Web Сервисы

XML Сервисы XML WSDL XML SOAP XML RDF XML RSS

 

XML Soap


  • SOAP расшифровывается как Simple Object Access P rotocol
  • SOAP является протоколом связи прикладных программ
  • SOAP представляет собой формат для отправки и получения сообщений
  • SOAP не зависит от платформы
  • SOAP основан на XML
  • SOAP является рекомендацией W3C

Почему SOAP?

Это важно для веб-приложений, чтобы иметь возможность общаться через Интернет.

Лучший способ для обмена данными между приложениями через HTTP является, потому что HTTP поддерживается всеми браузерами и серверами. SOAP был создан для достижения этой цели.

SOAP предоставляет способ для обмена данными между приложениями, работающими на различных операционных системах, с различными технологиями и языками программирования.


SOAP Строительные блоки

Сообщение SOAP представляет собой обычный XML-документ, содержащий следующие элементы:

  • Элемент Конверт, который идентифицирует документ XML как сообщение SOAP
  • Элемент заголовка, который содержит информацию заголовка
  • Элемент Body, который содержит вызов и ответ информацию
  • Элемент ошибки, содержащий ошибки и информацию о состоянии

Все элементы выше объявлены в пространстве имен по умолчанию для SOAP-конверта:

http://www.w3.org/2003/05/soap-envelope/

и пространство имен по умолчанию для кодирования SOAP и типов данных:

http://www.w3.org/2003/05/soap-encoding


Синтаксические правила

Вот некоторые важные правила синтаксиса:

  • Сообщение SOAP ДОЛЖЕН быть закодирован с использованием XML
  • Сообщение SOAP ДОЛЖЕН использовать пространство имен SOAP Envelope
  • Сообщение SOAP ДОЛЖЕН использовать пространство имен SOAP Encoding
  • Сообщение SOAP не должен содержать ссылку DTD
  • Сообщение SOAP не должен содержать XML Инструкции по обработке

Скелет сообщений SOAP

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
...
</soap:Header>

<soap:Body>
...
  <soap:Fault>
  ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

SOAP Envelope Элемент

Необходимый элемент SOAP Envelope является корневым элементом сообщения SOAP. Этот элемент определяет документ XML как сообщение SOAP.

пример

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
  ...
  Message information goes here
  ...
</soap:Envelope>

XMLNS: мыло пространство имен

Обратите внимание на XMLNS: пространство имен мыло в приведенном выше примере. Он всегда должен иметь значение: "http://www.w3.org/2003/05/soap-envelope/" .

Пространство имен определяет Конверт как конверт SOAP.

Если другое пространство имен используется приложение генерирует сообщение об ошибке и отбрасывает сообщение.


encodingStyle Атрибут

encodingStyle атрибут используется для определения типов данных , используемых в документе. Этот атрибут может появиться на любом SOAP-элемента, и применяет к содержанию элемента и всех дочерних элементов.

Сообщение SOAP не имеет кодировку по умолчанию.

Синтаксис

soap:encodingStyle="URI"

пример

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
  ...
  Message information goes here
  ...
</soap:Envelope>

SOAP-заголовка элемента

Необязательный элемент SOAP - заголовок содержит информацию конкретного приложения (like authentication, payment, etc) , (like authentication, payment, etc) о сообщении SOAP.

Если элемент заголовка присутствует, то он должен быть первым дочерним элементом элемента Envelope.

Note: Все непосредственные дочерние элементы элемента заголовка должны быть квалифицированы пространством имен.

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="http://www.w3ii.com/transaction/"
  soap:mustUnderstand="1">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

В приведенном выше примере содержит заголовок с "Trans" стихией, "mustUnderstand" атрибут со значением 1, а значение 234.

SOAP определяет три атрибуты в пространстве имен по умолчанию. Эти атрибуты: MustUnderstand, актер, и encodingStyle.

Атрибуты, определенные в заголовок SOAP определяет, каким образом получатель должен обрабатывать сообщение SOAP.


mustUnderstand Атрибут

Атрибут SOAP MustUnderstand может быть использован, чтобы указать, является ли обязательным или необязательным для получателя, чтобы обработать запись заголовка.

Если добавить MustUnderstand = "1" на дочерний элемент элемента заголовка это указывает на то, что обработка заголовка приемник должен распознать элемент. Если приемник не распознает элемент он потерпит неудачу при обработке заголовка.

Синтаксис

soap:mustUnderstand="0|1"

пример

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="http://www.w3ii.com/transaction/"
  soap:mustUnderstand="1">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

actor Атрибут

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

Атрибут SOAP актер используется для адресации элемента заголовка к конкретной конечной точке.

Синтаксис

soap:actor="URI"

пример

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="http://www.w3ii.com/transaction/"
  soap:actor="http://www.w3ii.com/appml/">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

encodingStyle Атрибут

encodingStyle атрибут используется для определения типов данных , используемых в документе. Этот атрибут может появиться на любом SOAP-элемент, и он будет относиться к содержанию этого элемента и всех дочерних элементов.

Сообщение SOAP не имеет кодировку по умолчанию.

Синтаксис

soap:encodingStyle="URI"

SOAP Элемент Body

Необходимый элемент SOAP Body содержит фактический SOAP-сообщение, предназначенное для конечной конечной части сообщения.

Непосредственные дочерние элементы элемента SOAP Body может быть пространством имен квалифицированы.

пример

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body>
  <m:GetPrice xmlns:m="http://www.w3ii.com/prices">
    <m:Item>Apples</m:Item>
  </m:GetPrice>
</soap:Body>

</soap:Envelope>

Приведенный выше пример запрашивает цену яблок. Обратите внимание, что м: GetPrice и элементы товара выше конкретного приложения элементы. Они не являются частью пространства имен SOAP.

Ответ SOAP может выглядеть следующим образом:

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body>
  <m:GetPriceResponse xmlns:m="http://www.w3ii.com/prices">
    <m:Price>1.90</m:Price>
  </m:GetPriceResponse>
</soap:Body>

</soap:Envelope>


SOAP Элемент ошибки

Необязательный элемент SOAP Fault используется для указания сообщения об ошибках.

Элемент SOAP Fault имеет ошибки и информацию о состоянии для сообщения SOAP.

Если элемент присутствует неисправность, то она должна выглядеть как дочерний элемент элемента Body. Элемент Fault может появиться только один раз в сообщении SOAP.

Элемент SOAP Fault имеет следующие подразделы элементы:

Sub Элемент Описание
<faultcode> Код для идентификации неисправности
<faultstring> Приспособленная для чтения человеком объяснение неисправности
<faultactor> Информация о том, кто вызвал сбой произойдет
<detail>

Содержит информацию об ошибках приложений, связанных с конкретным элементом Body

Коды неисправностей SOAP

Значения faultcode, определенные ниже, должны быть использованы в элементе faultcode при описании неисправностей:

ошибка Описание
VersionMismatch Найдено недопустимое пространство имен для элемента SOAP Envelope
MustUnderstand Непосредственным дочерним элементом элемента заголовка, с mustUnderstand атрибут установлен в "1" , не понял
Client Сообщение было неправильно сформирован или содержали неправильную информацию
Server Существовал проблема с сервером, так что сообщение не может продолжить

Протокол HTTP

HTTP связь по протоколу TCP / IP. Клиент HTTP подключается к серверу HTTP с использованием протокола TCP. После установления соединения, клиент может отправить сообщение запроса на HTTP-сервер:

POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200

Сервер обрабатывает запрос и отправляет ответ HTTP обратно клиенту. Ответ содержит код состояния, который указывает статус запроса:

200 OK
Content-Type: text/plain
Content-Length: 200

В приведенном выше примере, сервер возвратил код состояния 200. Это стандартный код успеха для HTTP.

Если сервер не может декодировать запрос, он мог бы вернуться что-то вроде этого:

400 Bad Request
Content-Length: 0

SOAP Binding

Спецификация SOAP определяет структуру сообщений SOAP, не так, как они обмениваются. Этот пробел заполняется тем , что называется "SOAP Bindings" . SOAP привязок механизмы, которые позволяют SOAP сообщения, которые будут эффективно обмениваться с использованием транспортного протокола.

Большинство реализаций SOAP обеспечивают привязки для обычных транспортных протоколов, таких как HTTP или SMTP.

HTTP является синхронным и широко используется. Запрос SOAP HTTP указывает, по меньшей мере, два HTTP заголовки: Content-Type и Content-Length.

SMTP является асинхронным и используется в крайнем случае или частных случаев.

Java реализаций SOAP обычно предоставляют специфического связывания для JMS (Java Messaging System) протокола.


Тип содержимого

Content-Type заголовка для запроса SOAP и ответа определяет тип MIME для сообщения и кодировки символов (optional) , используемого для XML тела запроса или ответа.

Синтаксис

Content-Type: MIMEType; charset=character-encoding

пример

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Content-Length

Заголовок Content-Length для запроса SOAP и ответа определяет количество байтов в теле запроса или ответа.

Синтаксис

Content-Length: bytes

пример

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

SOAP-пример

В приведенном ниже примере запрос GetStockPrice отправляется на сервер. Запрос имеет параметр StockName, и параметр цены, который будет возвращен в ответе. Пространство имен для функции определяется в "http://www.example.org/stock" .

Запрос SOAP:

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

Ответ SOAP:

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPriceResponse>
    <m:Price>34.5</m:Price>
  </m:GetStockPriceResponse>
</soap:Body>

</soap:Envelope>