Как сохранить wsdl в файл
Как получить файл wsdl из URL-адреса веб-службы
Я хочу получить файл WSDL для веб-сервиса, и единственное, что у меня есть, это его URL (например, webservice.пример/ФОО).
Если я использую URL напрямую, будет доставлен только ответ на ошибку.
55
автор: Ahmed Ashour
3 ответов
путем postfixing URL с ?WSDL
Если URL-адрес, например:
http://webservice.example:1234/foo
вы используете:
http://webservice.example:1234/foo?WSDL
и wsdl будет доставлен.
для получения WSDL
(Web Service Description Language
) из URL-адреса веб-службы.
можно из веб-служб SOAP:
http://www.w3schools.com/xml/tempconvert.asmx
чтобы получить WSDL, нам нужно только добавить ?WSDL
, например:
http://www.w3schools.com/xml/tempconvert.asmx?WSDL
его можно получить только WSDL, если веб-сервис настроен для его доставки. Для этого вам нужно указать serviceBehavior и включить httpGetEnabled:
<serviceBehaviors> <behavior name="BindingBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors>
если веб-сервис доступен только через https, вы должны включить httpsGetEnabled вместо httpGetEnabled.
7
автор: Manuel Koch
WSDL import в Visual Studio из файла или текста.
Когда пишется Web сервис, разработчику стоит задуматься о безопасности. Один из простых способов это скрытие из публичного доступа WSDL информации. Поэтому представьте ситуацию: вы интегрируетесь с какой то внешней системой. Разработчики этой системы присылают .docx файл с документацией к ней. Внутри содержится текст XML <wsdl:definitions /> и сразу встает вопрос, как же это использовать.- Первым делом выделяем всю XML из документа, копируем и сохраняем в отдельном файле с расширением .asmx.
- Далее отрываем Visual Studio жмем по References правую кнопку и выбираем "Add Service Reference..."
- В отрывшемся окне добавления ссылки в поле Address вводим строку формата "file://PATH.asmx" жмем GO и видим, что студия успешно считала содержащуюся в файле информацию о сервисе.
- После нажатия на OК можно начать работу со службой, передав в класс посредник её адрес. Пример создания клиента указан ниже:
WEB Service WSDL сохранить запрос
Вопрос: WSDL на базе XSD
Есть XSD описание нескольких десятков объектов, связанных между собой, конечно же. Есть объект Request примерно следующей структуры:
<xsd:complexType name="RequestType"> <xsd:sequence> <xsd:element name="RequestHeader" type="rht:RequestHeaderType"></xsd:element> <xsd:element name="RequestBody"> <xsd:complexType> <xsd:sequence> <xsd:choice> <xsd:element name="el1Request" type="tt1:el1Type"></xsd:element> <!-- ряд других объектов --> <xsd:element name="el50Request" type="tt50:el50Type"></xsd:element> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType>
Хочу написать руками к нему WSDL для импорта в VisualStudio чтобы не описывать классы по отдельности и автоматически генерировать запросы / проверять ответы. Подскажите, как правильно в WSDL описать запрос, например с телом запроса el50Request? На сколько я понимаю, сначала нужно описать свой объект, типа такого:
<xsd:complexType name="el50RequestType" type="RequestType"> <xsd:sequence> <xsd:element name="Request"> <xsd:complexType> <xsd:sequence> <xsd:element name="RequestHeader" type="rht:RequestHeaderType"></xsd:element> <xsd:element name="RequestBody"> <xsd:complexType> <xsd:sequence> <xsd:element name="el50Request" type="tt50:el50Type"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType>
И дальше уже в WSDL описывать метод с запросом этого типа и тд. С ответом аналогично.
Но чет валидатор ругается на то, что я выше описал.. Не нравится ему мой объект el50RequestType, говорит что не соответствует он типу RequestType Ответ: Спасибо за ответ!
В общем удалось все это скормить стандартной утилите xsd.exe и получить класс .cs на выходе, без всяких wsdl
Если коротко, то рецепт такой. Пишем скрипт, который переименовывает все xsd в короткие имена (из-за ограничения в 8к символов в аргументах cmd), скидывает их в один каталог и запускаем утилиту xsd.exe с параметрами, где перечисляем все xsd (0.xsd, 1.xsd...). Связи внутри xsd схем, типа импорт из такого то каталога xsd с таким то именем в утилите игнорируется, используется только то, что передано в качестве аргументов на вход xsd.exe
Загрузка wsdl файл в 1с – Ваш петербургский программист 1С
WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML.
После успешной публикаций web сервиса 1С нужно проверить доступность и корректность файла WSDL. Для этого нужно запустить любой браузер по адресу
http://www.ИмяСайта.ru/ПутьНаСайте/ИмяФайла.1cws?wsdl
Например, Запустите работающий сервис сбербанка http://www.cbr.ru/dailyinfowebserv/dailyinfo.asmx?WSDL
Браузер должен отобразить некий файл XML и не выдавать ошибку или пустую страницу или невнятный текст на любой кодировке.
Существуют 2 способа загрузки WSDL файл веб- сервиса в 1С:
- Статическая ссылка (Добавление WS-ссылки 1С ) – WS-ссылки 1С это объект 1С, который расположен в конфигурации в ветке Общие/WS-ссылки 1С. Добавление ссылки на веб сервис производится автоматически. Нажмите правой кнопкой на ветку, выберите Добавить, укажите путь к WSDL описанию веб сервиса. В результате добавления WS-ссылки 1С будет создана автоматически такая же структура, как создается вручную при добавлении Web сервиса.
- Динамическая ссылка ( WsСоединение ) – В этом случае на импорт WSDL в момент создания объекта будет потрачено определенное время
Подробнее о динамических и статических ссылках по материалам из диска ИТС я написал здесь
Часто при загрузке WSDL файл статически (WS-ссылки) или динамически (WsСоединение) может возникать ошибку типа нет соединения с веб сервисом или не верный формат данных в файле WSDL
Особенность загрузки WSDL в 1С в том, что валидные схемы могут не загружаться. Никакого встроенного валидатора нет, поэтому приходится искать ошибку методом деструктивного анализа, последовательно уменьшая количество элементов в схеме.
Веб -программисты используют программу Web Services Validation Tool for WSDL and SOAP для создания, проверки, передачи и приема SOAP-сообщений.
Вот например, файл WSDL( см рис 1) в 1С не загружается и выдается ошибка о неверном формате. Сначала я удалил описание веб-сервиса в XML-редакторе и ничего не получилось, но когда я убрал , все что связано со словами «policies» удалось загружать
Рис 1. Не верный формат WSDL -файла для загрузки в 1С
Поделиться ссылкой:
Понравилось это:
Нравится Загрузка...
Похожее
Автор публикации
1 Комментарии: 28Публикации: 458Регистрация: 25-12-2016WSDL - Краткое руководство - CoderLessons.com
WSDL расшифровывается как язык описания веб-сервисов. Это стандартный формат для описания веб-службы. WSDL был разработан совместно Microsoft и IBM.
Особенности WSDL
-
WSDL — это основанный на XML протокол для обмена информацией в децентрализованных и распределенных средах.
-
Определения WSDL описывают, как получить доступ к веб-службе и какие операции она будет выполнять.
-
WSDL — это язык для описания взаимодействия с сервисами на основе XML.
-
WSDL является неотъемлемой частью универсального описания, обнаружения и интеграции (UDDI), всемирного реестра предприятий на основе XML.
-
WSDL — это язык, который использует UDDI.
-
WSDL произносится как «wiz-тупой» и произносится как «WSD-L».
WSDL — это основанный на XML протокол для обмена информацией в децентрализованных и распределенных средах.
Определения WSDL описывают, как получить доступ к веб-службе и какие операции она будет выполнять.
WSDL — это язык для описания взаимодействия с сервисами на основе XML.
WSDL является неотъемлемой частью универсального описания, обнаружения и интеграции (UDDI), всемирного реестра предприятий на основе XML.
WSDL — это язык, который использует UDDI.
WSDL произносится как «wiz-тупой» и произносится как «WSD-L».
Использование WSDL
WSDL часто используется в сочетании с SOAP и XML-схемой для предоставления веб-сервисов через Интернет. Клиентская программа, подключающаяся к веб-службе, может прочитать WSDL, чтобы определить, какие функции доступны на сервере. Все используемые специальные типы данных встраиваются в файл WSDL в форме XML-схемы. Затем клиент может использовать SOAP для фактического вызова одной из функций, перечисленных в WSDL.
История WSDL
WSDL 1.1 был представлен Ariba, IBM и Microsoft в виде заметки W3C для описания сервисов для W3C XML Activity по XML-протоколам в марте 2001 года.
WSDL 1.1 не был одобрен Консорциумом World Wide Web (W3C), однако он только что выпустил проект для версии 2.0, который будет рекомендацией (официальным стандартом), и, таким образом, одобрен W3C.
WSDL разбивает веб-службы на три определенных идентифицируемых элемента, которые могут быть объединены или использованы повторно после определения.
Три основных элемента WSDL, которые могут быть определены отдельно:
- Типы
- операции
- переплет
Документ WSDL имеет различные элементы, но они содержатся в этих трех основных элементах, которые можно разрабатывать как отдельные документы, а затем их можно объединять или повторно использовать для формирования полных файлов WSDL.
Элементы WSDL
Документ WSDL содержит следующие элементы:
-
Определение — это корневой элемент всех документов WSDL. Он определяет имя веб-службы, объявляет несколько пространств имен, используемых в оставшейся части документа, и содержит все элементы службы, описанные здесь.
-
Типы данных — типы данных, которые будут использоваться в сообщениях, представлены в форме схем XML.
-
Сообщение — это абстрактное определение данных в форме сообщения, представленного либо в виде всего документа, либо в качестве аргументов, которые должны быть сопоставлены с вызовом метода.
-
Операция — это абстрактное определение операции для сообщения, например, присвоение имени методу, очереди сообщений или бизнес-процессу, которое примет и обработает сообщение.
-
Тип порта — это абстрактный набор операций, сопоставленный с одной или несколькими конечными точками, определяющий набор операций для привязки; коллекция операций, как она абстрактна, может быть сопоставлена с несколькими транспортными средствами через различные привязки.
-
Связывание — это конкретный протокол и форматы данных для операций и сообщений, определенных для определенного типа порта.
-
Порт — это сочетание привязки и сетевого адреса, обеспечивающее целевой адрес службы связи.
-
Сервис — это набор связанных конечных точек, охватывающий определения сервиса в файле; службы сопоставляют привязку с портом и включают любые определения расширяемости.
Определение — это корневой элемент всех документов WSDL. Он определяет имя веб-службы, объявляет несколько пространств имен, используемых в оставшейся части документа, и содержит все элементы службы, описанные здесь.
Типы данных — типы данных, которые будут использоваться в сообщениях, представлены в форме схем XML.
Сообщение — это абстрактное определение данных в форме сообщения, представленного либо в виде всего документа, либо в качестве аргументов, которые должны быть сопоставлены с вызовом метода.
Операция — это абстрактное определение операции для сообщения, например, присвоение имени методу, очереди сообщений или бизнес-процессу, которое примет и обработает сообщение.
Тип порта — это абстрактный набор операций, сопоставленный с одной или несколькими конечными точками, определяющий набор операций для привязки; коллекция операций, как она абстрактна, может быть сопоставлена с несколькими транспортными средствами через различные привязки.
Связывание — это конкретный протокол и форматы данных для операций и сообщений, определенных для определенного типа порта.
Порт — это сочетание привязки и сетевого адреса, обеспечивающее целевой адрес службы связи.
Сервис — это набор связанных конечных точек, охватывающий определения сервиса в файле; службы сопоставляют привязку с портом и включают любые определения расширяемости.
В дополнение к этим основным элементам спецификация WSDL также определяет следующие служебные элементы:
-
Документация — Этот элемент используется для предоставления удобочитаемой документации и может быть включен в любой другой элемент WSDL.
-
Импорт — этот элемент используется для импорта других документов WSDL или схем XML.
Документация — Этот элемент используется для предоставления удобочитаемой документации и может быть включен в любой другой элемент WSDL.
Импорт — этот элемент используется для импорта других документов WSDL или схем XML.
ПРИМЕЧАНИЕ. — Части WSDL обычно генерируются автоматически с использованием инструментов, поддерживающих веб-службы.
Структура документа WSDL
Основная структура документа WSDL выглядит следующим образом —
<definitions> <types> definition of types........ </types> <message> definition of a message.... </message> <portType> <operation> definition of a operation....... </operation> </portType> <binding> definition of a binding.... </binding> <service> definition of a service.... </service> </definitions>
Документ WSDL также может содержать другие элементы, такие как элементы расширения и элемент службы, которые позволяют группировать определения нескольких веб-служб в одном документе WSDL.
Продолжите анализировать пример документа WSDL.
Ниже приведен файл WSDL, предоставленный для демонстрации простой программы WSDL.
Предположим, что сервис предоставляет единственную общедоступную функцию, называемую sayHello . Эта функция ожидает один строковый параметр и возвращает приветствие одной строки. Например, если вы передаете параметр world, то сервисная функция sayHello возвращает приветствие «Hello, world!».
пример
Содержимое файла HelloService.wsdl —
<definitions name = "HelloService" targetNamespace = "http://www.examples.com/wsdl/HelloService.wsdl" xmlns = "http://schemas.xmlsoap.org/wsdl/" xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns = "http://www.examples.com/wsdl/HelloService.wsdl" xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <message name = "SayHelloRequest"> <part name = "firstName" type = "xsd:string"/> </message> <message name = "SayHelloResponse"> <part name = "greeting" type = "xsd:string"/> </message> <portType name = "Hello_PortType"> <operation name = "sayHello"> <input message = "tns:SayHelloRequest"/> <output message = "tns:SayHelloResponse"/> </operation> </portType> <binding name = "Hello_Binding" type = "tns:Hello_PortType"> <soap:binding style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http"/> <operation name = "sayHello"> <soap:operation soapAction = "sayHello"/> <input> <soap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </input> <output> <soap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </output> </operation> </binding> <service name = "Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding = "tns:Hello_Binding" name = "Hello_Port"> <soap:address location = "http://www.examples.com/SayHello/" /> </port> </service> </definitions>
Пример анализа
-
Определения — HelloService
-
Тип — Использование встроенных типов данных, и они определены в XMLSchema.
-
Сообщение —
-
sayHelloRequest — параметр firstName
-
sayHelloresponse — приветствие, возвращаемое значение
-
-
Тип порта — операция sayHello, состоящая из запроса и службы ответа.
-
Привязка — Направление использования транспортного протокола HTTP SOAP.
-
Сервис — Сервис доступен по адресу http://www.examples.com/SayHello/
-
Порт — связывает привязку с URI http://www.examples.com/SayHello/, где можно получить доступ к работающей службе.
Определения — HelloService
Тип — Использование встроенных типов данных, и они определены в XMLSchema.
Сообщение —
sayHelloRequest — параметр firstName
sayHelloresponse — приветствие, возвращаемое значение
Тип порта — операция sayHello, состоящая из запроса и службы ответа.
Привязка — Направление использования транспортного протокола HTTP SOAP.
Сервис — Сервис доступен по адресу http://www.examples.com/SayHello/
Порт — связывает привязку с URI http://www.examples.com/SayHello/, где можно получить доступ к работающей службе.
Элемент <definitions> должен быть корневым элементом всех документов WSDL. Он определяет название веб-службы.
Вот фрагмент кода из последней главы, в котором используется элемент определения .
<definitions name="HelloService" targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> ................................................ </definitions>
Из приведенного выше примера можно сделать вывод, что определения —
-
является контейнером всех других элементов.
-
указывает, что этот документ называется HelloService .
-
указывает атрибут targetNamespace . TargetNamespace — это соглашение XML-схемы, которое позволяет документу WSDL ссылаться на себя. В этом примере мы указали targetNamespace http://www.examples.com/wsdl/HelloService.wsdl
-
определяет пространство имен по умолчанию: xmlns = http: //schemas.xmlsoap.org/wsdl/. Поэтому все элементы без префикса пространства имен, такие как message или portType , считаются частью пространства имен WSDL по умолчанию.
-
определяет многочисленные пространства имен, которые используются в оставшейся части документа.
является контейнером всех других элементов.
указывает, что этот документ называется HelloService .
указывает атрибут targetNamespace . TargetNamespace — это соглашение XML-схемы, которое позволяет документу WSDL ссылаться на себя. В этом примере мы указали targetNamespace http://www.examples.com/wsdl/HelloService.wsdl
определяет пространство имен по умолчанию: xmlns = http: //schemas.xmlsoap.org/wsdl/. Поэтому все элементы без префикса пространства имен, такие как message или portType , считаются частью пространства имен WSDL по умолчанию.
определяет многочисленные пространства имен, которые используются в оставшейся части документа.
ПРИМЕЧАНИЕ. — Спецификация пространства имен не требует, чтобы документ присутствовал в данном месте. Важным моментом является то, что вы указываете уникальное значение, отличное от всех других определенных пространств имен.
Веб-сервис должен определить свои входы и выходы и то, как они отображаются в сервисы и выходят из них. Элемент WSDL <types> заботится об определении типов данных, используемых веб-службой. Типы — это документы XML или части документа.
-
Элемент types описывает все типы данных, используемые между клиентом и сервером.
-
WSDL не привязан исключительно к конкретной системе ввода.
-
WSDL использует спецификацию XML-схемы W3C в качестве выбора по умолчанию для определения типов данных.
-
Если служба использует только простые встроенные типы XML-схемы, такие как строки и целые числа, то элемент types не требуется.
-
WSDL позволяет определять типы в отдельных элементах, чтобы их можно было повторно использовать в нескольких веб-службах.
Элемент types описывает все типы данных, используемые между клиентом и сервером.
WSDL не привязан исключительно к конкретной системе ввода.
WSDL использует спецификацию XML-схемы W3C в качестве выбора по умолчанию для определения типов данных.
Если служба использует только простые встроенные типы XML-схемы, такие как строки и целые числа, то элемент types не требуется.
WSDL позволяет определять типы в отдельных элементах, чтобы их можно было повторно использовать в нескольких веб-службах.
Вот фрагмент кода, взятый из спецификации W3C. Этот код показывает, как элемент типов может использоваться в WSDL.
<types> <schema targetNamespace = "http://example.com/stockquote.xsd" xmlns = "http://www.w3.org/2000/10/XMLSchema"> <element name = "TradePriceRequest"> <complexType> <all> <element name = "tickerSymbol" type = "string"/> </all> </complexType> </element> <element name = "TradePrice"> <complexType> <all> <element name = "price" type = "float"/> </all> </complexType> </element> </schema> </types>
Типы данных решают проблему определения типов данных и форматов, которые вы собираетесь использовать с вашими веб-сервисами. Информация о типе распределяется между отправителем и получателем. Таким образом, получатели сообщений должны иметь доступ к информации, которую вы использовали для кодирования ваших данных, и должны понимать, как их декодировать.
Элемент <message> описывает данные, которыми обмениваются поставщики веб-услуг и потребители.
-
Каждый веб-сервис имеет два сообщения: вход и выход.
-
Входные данные описывают параметры для веб-службы, а выходные данные описывают возвращаемые данные из веб-службы.
-
Каждое сообщение содержит ноль или более параметров <part> , по одному для каждого параметра функции веб-службы.
-
Каждый параметр <part> связывается с конкретным типом, определенным в элементе контейнера <types> .
Каждый веб-сервис имеет два сообщения: вход и выход.
Входные данные описывают параметры для веб-службы, а выходные данные описывают возвращаемые данные из веб-службы.
Каждое сообщение содержит ноль или более параметров <part> , по одному для каждого параметра функции веб-службы.
Каждый параметр <part> связывается с конкретным типом, определенным в элементе контейнера <types> .
Давайте возьмем кусок кода из главы примера WSDL —
<message name = "SayHelloRequest"> <part name = "firstName" type = "xsd:string"/> </message> <message name = "SayHelloResponse"> <part name = "greeting" type = "xsd:string"/> </message>
Здесь определены два элемента сообщения. Первый представляет сообщение запроса SayHelloRequest , а второй представляет ответное сообщение SayHelloResponse .
Каждое из этих сообщений содержит один элемент part. Для запроса часть определяет параметры функции; в этом случае мы указываем один параметр firstName . Для ответа часть определяет возвращаемые значения функции; в этом случае мы указываем одно возвращаемое значение приветствия.
Элемент <portType> объединяет несколько элементов сообщения, чтобы сформировать полную одностороннюю или двустороннюю операцию.
Например, <portType> может объединять один запрос и одно ответное сообщение в одну операцию запрос / ответ. Это чаще всего используется в сервисах SOAP. PortType может определять несколько операций.
Давайте возьмем кусок кода из главы примера WSDL —
<portType name = "Hello_PortType"> <operation name = "sayHello"> <input message = "tns:SayHelloRequest"/> <output message = "tns:SayHelloResponse"/> </operation> </portType>
-
Элемент portType определяет одну операцию, называемую sayHello .
-
Операция состоит из одного входного сообщения SayHelloRequest и
-
выходное сообщение SayHelloResponse .
Элемент portType определяет одну операцию, называемую sayHello .
Операция состоит из одного входного сообщения SayHelloRequest и
выходное сообщение SayHelloResponse .
Образцы Операции
WSDL поддерживает четыре основных шаблона работы —
В одну сторону
Служба получает сообщение. Следовательно, операция имеет один элемент ввода . Грамматика для односторонней операции —
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken"> <wsdl:input name = "nmtoken"? message = "qname"/> </wsdl:operation> </wsdl:portType > </wsdl:definitions>
Ответ на запрос
Служба получает сообщение и отправляет ответ. Поэтому операция имеет один элемент ввода , за которым следует один элемент вывода . Для инкапсуляции ошибок также может быть указан необязательный элемент неисправности . Грамматика для операции запрос-ответ —
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> <wsdl:input name = "nmtoken"? message = "qname"/> <wsdl:output name = "nmtoken"? message = "qname"/> <wsdl:fault name = "nmtoken" message = "qname"/>* </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Запрашивать-ответ
Служба отправляет сообщение и получает ответ. Поэтому операция имеет один элемент вывода , за которым следует один элемент ввода . Для инкапсуляции ошибок также может быть указан необязательный элемент неисправности . Грамматика для операции запроса-ответа —
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> <wsdl:output name = "nmtoken"? message = "qname"/> <wsdl:input name = "nmtoken"? message = "qname"/> <wsdl:fault name = "nmtoken" message = "qname"/>* </wsdl:operation> </wsdl:portType > </wsdl:definitions>
уведомление
Служба отправляет сообщение. Следовательно, операция имеет один выходной элемент. Ниже приведена грамматика для операции уведомления:
<wsdl:definitions .... > <wsdl:portType .... > * <wsdl:operation name = "nmtoken"> <wsdl:output name = "nmtoken"? message = "qname"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Элемент <binding> предоставляет конкретные сведения о том, как операция portType будет передаваться по проводам.
-
Привязки могут быть доступны через несколько транспортов, включая HTTP GET, HTTP POST или SOAP.
-
Привязки предоставляют конкретную информацию о том, какой протокол используется для передачи операций portType .
-
Привязки предоставляют информацию о том, где находится сервис.
-
Для протокола SOAP привязка — это <soap: binding> , а транспорт — это сообщения SOAP поверх протокола HTTP.
-
Вы можете указать несколько привязок для одного portType .
Привязки могут быть доступны через несколько транспортов, включая HTTP GET, HTTP POST или SOAP.
Привязки предоставляют конкретную информацию о том, какой протокол используется для передачи операций portType .
Привязки предоставляют информацию о том, где находится сервис.
Для протокола SOAP привязка — это <soap: binding> , а транспорт — это сообщения SOAP поверх протокола HTTP.
Вы можете указать несколько привязок для одного portType .
Элемент привязки имеет два атрибута: атрибут name и type .
<binding name = "Hello_Binding" type = "tns:Hello_PortType">
Атрибут name определяет имя привязки, а атрибут type указывает на порт для привязки, в данном случае это порт «tns: Hello_PortType».
SOAP Binding
WSDL 1.1 включает в себя встроенные расширения для SOAP 1.1. Он позволяет указывать специфические детали SOAP, включая заголовки SOAP, стили кодирования SOAP и HTTP-заголовок SOAPAction. Элементы расширения SOAP включают следующее:
- мыло: связывание
- мыло: операция
- мыло: тело
мыло: связывание
Этот элемент указывает, что привязка будет доступна через SOAP. Атрибут style указывает общий стиль формата сообщения SOAP. Значение стиля rpc указывает формат RPC.
Атрибут транспорта указывает транспорт сообщений SOAP. Значение http://schemas.xmlsoap.org/soap/http указывает транспорт HTTP SOAP, тогда как http://schemas.xmlsoap.org/soap/smtp указывает транспорт SMTP SOAP.
мыло: операция
Этот элемент указывает на привязку конкретной операции к конкретной реализации SOAP. Атрибут soapAction указывает, что HTTP-заголовок SOAPAction будет использоваться для идентификации службы.
мыло: тело
Этот элемент позволяет указать детали входных и выходных сообщений. В случае HelloWorld элемент body определяет стиль кодирования SOAP и URN пространства имен, связанный с указанным сервисом.
Вот фрагмент кода из главы «Пример» —
<binding name = "Hello_Binding" type = "tns:Hello_PortType"> <soap:binding style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http"/> <operation name = "sayHello"> <soap:operation soapAction = "sayHello"/> <input> <soap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </input> <output> <soap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </output> </operation> </binding>
Элемент <port> определяет отдельную конечную точку, указав один адрес для привязки.
Вот грамматика для указания порта —
<wsdl:definitions .... > <wsdl:service .... > * <wsdl:port name = "nmtoken" binding = "qname"> * <-- extensibility element (1) --> </wsdl:port> </wsdl:service> </wsdl:definitions>
-
Элемент порта имеет два атрибута: имя и привязка .
-
Атрибут name обеспечивает уникальное имя среди всех портов, определенных в прилагаемом документе WSDL.
-
Атрибут привязки относится к привязке с использованием правил связывания, определенных WSDL.
-
Элементы расширяемости привязки используются для указания адресной информации для порта.
-
Порт НЕ ДОЛЖЕН указывать более одного адреса.
-
Порт НЕ ДОЛЖЕН указывать какую-либо информацию о привязке, кроме информации об адресе.
Элемент порта имеет два атрибута: имя и привязка .
Атрибут name обеспечивает уникальное имя среди всех портов, определенных в прилагаемом документе WSDL.
Атрибут привязки относится к привязке с использованием правил связывания, определенных WSDL.
Элементы расширяемости привязки используются для указания адресной информации для порта.
Порт НЕ ДОЛЖЕН указывать более одного адреса.
Порт НЕ ДОЛЖЕН указывать какую-либо информацию о привязке, кроме информации об адресе.
Вот фрагмент кода из главы «Пример» —
<service name = "Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding = "tns:Hello_Binding" name = "Hello_Port"> <soap:address location = "http://www.examples.com/SayHello/"> </port> </service>
Элемент <service> определяет порты, поддерживаемые веб-службой. Для каждого из поддерживаемых протоколов существует один элемент порта. Служебный элемент представляет собой набор портов.
-
Клиенты веб-службы могут узнать следующее из элемента службы —
- где получить доступ к услуге,
- через какой порт получить доступ к веб-сервису, и
- как определяются коммуникационные сообщения.
-
Элемент службы включает в себя элемент документации для обеспечения удобочитаемой документации.
Клиенты веб-службы могут узнать следующее из элемента службы —
Элемент службы включает в себя элемент документации для обеспечения удобочитаемой документации.
Вот фрагмент кода из главы «Пример» —
<service name = "Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding = "tns:Hello_Binding" name = "Hello_Port"> <soap:address location = "http://www.examples.com/SayHello/"> </port> </service>
Атрибуты привязки элемента порта связывают адрес службы с элементом привязки, определенным в веб-службе. В этом примере это Hello_Binding
<binding name =" Hello_Binding" type = "tns:Hello_PortType"> <soap:binding style = "rpc" transport = "http://schemas.xmlsoap.org/soap/http"/> <operation name = "sayHello"> <soap:operation soapAction = "sayHello"/> <input> <soap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </input> <output> <soap:body encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </output> </operation> </binding>
Мы рассмотрели основы WSDL в этом уроке. Следующим шагом является изучение SOAP, UDDI и веб-сервисов.
Веб-сервисы
Веб-сервисы — это веб-приложения открытого стандарта (XML, SOAP, HTTP и т. Д.), Которые взаимодействуют с другими веб-приложениями с целью обмена данными.
Чтобы узнать больше о веб-сервисах, посетите учебник по веб-сервисам.
UDDI
UDDI — это основанный на XML стандарт для описания, публикации и поиска веб-сервисов.
Чтобы узнать больше об UDDI, посетите UDDI Tutorial.
МЫЛО
SOAP — это простой протокол на основе XML, который позволяет приложениям обмениваться информацией по HTTP.
Чтобы узнать больше о SOAP, посетите SOAP Tutorial.
Если вы заинтересованы в том, чтобы перечислить свою компанию, веб-сайт или книги в качестве ресурса WSDL, свяжитесь с нами по адресу [email protected].
15. март 2001
04. июнь 2002
28. окт 2002
11. фев 2004
11. фев 2004
11. фев 2004
11. июнь 2003
11. июнь 2003
11. июнь 2003
27. март 2006
27. март 2006
27. март 2006
27. март 2006
18. май 2006
09. май 2006
09. май 2006
15. дек 2004
Советы и приемы программирования Web-служб: Импорт в WSDL-файлах
Советы и приемы программирования Web-служб
Russell Butek
Опубликовано 09.07.2004
Серия контента:
Этот контент является частью # из серии # статей: Советы и приемы программирования Web-служб
https://www.ibm.com/developerworks/ru/library/?series_title_by=**auto**
Следите за выходом новых статей этой серии.
Этот контент является частью серии:Советы и приемы программирования Web-служб
Следите за выходом новых статей этой серии.
Операторы import являются простыми, не так ли? Они есть почти в каждом языке программирования или языке описания интерфейсов; если вы читаете эту статью, то, возможно, знаете все, что необходимо знать об import. Итак, почему вы должны прочитать совет по оператору import в файлах Web Services Description Language (WSDL)? Во-первых, существуют два типа операторов import: XSD import и WDSL import. Во-вторых, их соответствующее поведение не совсем идентично. И, в-третьих, хорошо бы знать взаимосвязь между ними.
Import против include
Перед погружением в описание операторов import, разрешите мне сказать о различии import и include. Оператор import работает в другом пространстве имен. Оператор include включает другие описания в текущее пространство имен.
XSD-импорт
Рассмотрим основной XSD import, например, показанный красным цветом в листинге 1. Все что этот оператор делает - это импорт пространства имен из одной схемы в другую. Схема, определяющая пространство имен urn:listing2
, импортирует схему urn:listing3
. Это все. Никакой файл не импортируется. Обе схемы находятся в одном том же самом файле в листинге 1.
Листинг 1. Адресная книга WSDL, использующая два пространства имен
<?xml version="1.0" ?> <wsdl:definitions targetNamespace="urn:listing2" xmlns:tns="urn:listing2" xmlns:listing3="urn:listing3" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/> <wsdl:types> <xsd:schema targetNamespace="urn:listing3" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/> <xsd:complexType name="Phone"> <xsd:sequence> <xsd:element name="areaCode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:int"/> <xsd:element name="number" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema> <xsd:schema targetNamespace="urn:listing2" xmlns:listing3="urn:listing3" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="urn:listing3"/> <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/> <xsd:complexType name="Address"> <xsd:sequence> <xsd:element name="streetNum" type="xsd:int"/> <xsd:element name="streetName" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="phone" type="listing3:Phone"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="GetAddressRequest"> <wsdl:part name="name" type="xsd:string"/> </wsdl:message> <wsdl:message name="GetAddressResponse"> <wsdl:part name="address" type="tns:Address"/> </wsdl:message> <wsdl:message name="GetPhoneRequest"> <wsdl:part name="name" type="xsd:string"/> </wsdl:message> <wsdl:message name="GetPhoneResponse"> <wsdl:part name="phone" type="listing3:Phone"/> </wsdl:message> <wsdl:portType name="AddressBook"> <wsdl:operation name="getAddress"> <wsdl:input message="tns:GetAddressRequest"/> <wsdl:output message="tns:GetAddressResponse"/> </wsdl:operation> <wsdl:operation name="getPhone"> <wsdl:input message="tns:GetPhoneRequest"/> <wsdl:output message="tns:GetPhoneResponse"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Надеюсь, из листинга 1 ясно, что главной целью оператора import является импорт пространства имен. Более распространенным использованием оператора XSD import является импорт пространства имен, которое появляется в другом файле. Вы можете собрать информацию по пространству имен из файла, но не забудьте, что импортируете пространство имен, а не файл (не путайте оператор import с include).
При импортировании пространства имен из файла вы можете обнаружить атрибут schemaLocation
в операторе XSD import, но это необязательный атрибут. Как показано в листинге 1, schemaLocation не обязателен, поскольку пространство имен оператора import находится там же (в том же файле), где и сам оператор import. Фактически, если вы укажете место расположение файла (как в листинге 2), XML-парсер может проигнорировать это по своему усмотрению. Атрибут schemaLocation
- это попросту подсказка. Если парсер уже знает о типах схемы в этом пространстве имен или имеет какие-либо другие средства их обнаружения, он не обязан переходить в указанное вами место. Такое поведение должно быть для вас еще одним напоминанием о том, что основным назначением оператора XSD import является импортирование пространства имен, а не указание местонахождения объявлений в нем. Естественно, что чаще всего вы будете импортировать пространство имен, о котором XML-парсер ничего не знает, поэтому атрибут schemaLocation
становится необходимым и легко забыть, что он является только подсказкой.
Теперь рассмотрим операторы import, выделенные в листинге 1 синим цветом. Поскольку я использую XSD-пространство имен, я должен явно импортировать его. Но это пространство имен является общим. Практически каждый XML-парсер знает о нем. Большинство парсеров часто не требуют указания для него оператора import. Множество инструментальных средств даже не требуют от вас включения оператора import, выделенного красным цветом (в конце концов, импортируемое пространство имен находится в этом же файле), но у вас должно войти в привычку включение оператора import для всех используемых вами пространств имен. Вы не можете знать, что вы или кто-нибудь другой, использующий ваш WSDL-файл, не будет работать с более взыскательными программами.
Еще раз убедитесь, что используемое вами в операторе import пространство имен является таким же, что и targetNamespace импортируемой схемы. Совершенно очевидно, что в показанном в листинге 1 примере вы должны сделать это. Но если вы переместите схему urn:listing3
в файл с именем listing3.xml и импортируете этот файл (как в листинге 2), то это может стать не очевидным. Фактически, это может выглядеть так, как будто вы изменяете пространство имен схемы в файле, используя отличный от указанного в targetNamespace атрибут оператора import. Это является ошибкой. Вы не можете изменять пространства имен. Атрибут пространства имен оператора import должен соответствовать targetNamespace схемы.
Листинги 2 и 3 получены из листинга 1. Листинг 2 - это листинг 1 с перемещенной схемой Phone в другой файл - листинг 3. Оператор import листинга 2 теперь включает атрибут schemaLocation
(выделенный синим цветом). Это рекомендуемый способ импорта схемы из файла.
Листинг 2. Адресная книга WSDL, импортирующая XSD-файл для схемы Phone
<?xml version="1.0" ?> <wsdl:definitions targetNamespace="urn:listing2" xmlns:tns="urn:listing2" xmlns:listing3="urn:listing3" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xsd:schema targetNamespace="urn:listing2" xmlns:listing3="urn:listing3" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="urn:listing3" schemaLocation="listing3.xsd" /> <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/> <xsd:complexType name="Address"> <xsd:sequence> <xsd:element name="streetNum" type="xsd:int"/> <xsd:element name="streetName" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="phone" type="listing3:Phone"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="GetAddressRequest"> <wsdl:part name="name" type="xsd:string"/> </wsdl:message> <wsdl:message name="GetAddressResponse"> <wsdl:part name="address" type="tns:Address"/> </wsdl:message> <wsdl:message name="GetPhoneRequest"> <wsdl:part name="name" type="xsd:string"/> </wsdl:message> <wsdl:message name="GetPhoneResponse"> <wsdl:part name="phone" type="listing3:Phone"/> </wsdl:message> <wsdl:portType name="AddressBook"> <wsdl:operation name="getAddress"> <wsdl:input message="tns:GetAddressRequest"/> <wsdl:output message="tns:GetAddressResponse"/> </wsdl:operation> <wsdl:operation name="getPhone"> <wsdl:input message="tns:GetPhoneRequest"/> <wsdl:output message="tns:GetPhoneResponse"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Листинг 3. XSD-файл для схемы Phone
<?xml version="1.0" ?> <xsd:schema targetNamespace="urn:listing3" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/> <xsd:complexType name="Phone"> <xsd:sequence> <xsd:element name="areaCode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:int"/> <xsd:element name="number" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
WSDL-импорт
Взгляните на листинги 4 и 5. Они почти такие же, как и листинги 2 и 3. Листинг 4 импортирует листинг 5 как листинг 2 импортирует листинг 3. Но сейчас я использую WSDL-импорт вместо XSD-импорта. Отличия между листингом 2 и листингом 4 выделены синим цветом в листинге 4. Аналогично, отличия между листингом 3 и листингом 5 выделены синим цветом в листинге 5.
Листинг 4. Адресная книга WSDL, импортирующая WSDL-файл для схемы Phone
<?xml version="1.0" ?> <wsdl:definitions targetNamespace="urn:listing4" xmlns:tns="urn:listing4" xmlns:listing5="urn:listing5" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:import namespace="urn:listing5" location="listing5.wsdl"/> <wsdl:types> <xsd:schema targetNamespace="urn:listing4" xmlns:listing5="urn:listing5" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/> <xsd:complexType name="Address"> <xsd:sequence> <xsd:element name="streetNum" type="xsd:int"/> <xsd:element name="streetName" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="phone" type="listing5:Phone" /> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="GetAddressRequest"> <wsdl:part name="name" type="xsd:string"/> </wsdl:message> <wsdl:message name="GetAddressResponse"> <wsdl:part name="address" type="tns:Address"/> </wsdl:message> <wsdl:message name="GetPhoneRequest"> <wsdl:part name="name" type="xsd:string"/> </wsdl:message> <wsdl:message name="GetPhoneResponse"> <wsdl:part name="phone" type="listing5:Phone" /> </wsdl:message> <wsdl:portType name="AddressBook"> <wsdl:operation name="getAddress"> <wsdl:input message="tns:GetAddressRequest"/> <wsdl:output message="tns:GetAddressResponse"/> </wsdl:operation> <wsdl:operation name="getPhone"> <wsdl:input message="tns:GetPhoneRequest"/> <wsdl:output message="tns:GetPhoneResponse"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Листинг 5. WSDL-файл для схемы Phone
<?xml version="1.0" ?> <wsdl:definitions targetNamespace="urn:listing5" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema targetNamespace="urn:listing5" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/> <xsd:complexType name="Phone"> <xsd:sequence> <xsd:element name="areaCode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:int"/> <xsd:element name="number" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> </wsdl:definitions>
Нужно ли это делать? Если вы запустите любимую программу преобразования WSDL в Java с listing4.wsdl, то получите сообщение об ошибке. В листинге 4 я выделил две ссылки на тип Phone: одну зеленым цветом, другую красным. Зеленая ссылка находится в операторе WSDL message. Этот оператор находит Phone, поскольку является WSDL-оператором, а WSDL-файл импортирует Phone через WSDL-оператор import. Красная ссылка находится в схеме. Эта ссылка не находит схему Phone, поскольку она не импортируется через XSD-оператор import. Вы не можете выйти из схемы для поиска других схем. Вы должны импортировать схемы внутри схем.
Если тип Address
не содержит элемент phone и, таким образом, не ссылается на пространство имен urn:listing5
, то эта пара (листинг 4 и листинг 5) будет допустимой. Но это не является хорошей практикой импорта информации о схеме WSDL-оператором import. Листинги 2 и 3 предпочтительней листингов 4 и 5. Используйте XSD-импорт для импорта схем. Используйте WSDL-импорт для импорта WSDL.
В качестве примера правильного WSDL-импорта обратите внимание на листинг 4, который не содержит ни операторы binding, ни операторы service. Возможно какой-нибудь другой файл, содержащий binding и service, будет импортировать listing4.wsdl через WSDL-оператор import.
Пара последних комментариев по WSDL-импорту. Аналогично XSD-импорту, атрибут namespace
WSDL-оператора import должен быть таким же, как targetNamespace импортируемого WSDL. Атрибут location
WSDL-оператора import, аналогично атрибуту schemaLocation
XSD-оператора import, является просто подсказкой. Однако, в отличие от schemaLocation
, присутствие атрибута location
WSDL-оператора import необходимо. (Это не ясно из спецификации WSDL 1.1, но Basic Profile на Web-сайте WS-I указывает на это. (См. раздел Ресурсы.)
Резюме
В данной статье сделана попытка рассказать о следующем:
- Хорошей практикой является использование XSD-импорта для импорта схем и WSDL-импорта для импорта WSDL.
- Хорошей практикой является импортирование всех используемых вами пространств имен.
- Значение атрибута импортируемого пространства имен должно соответствовать импортируемому значению targetNamespace.
- Основным назначением оператора import является импорт пространств имен. Атрибуты
schemaLocation
иlocation
фактически являются только подсказками, хотя иногда необходимы.
Ресурсы для скачивания
Похожие темы
- Оригинальная статя "WSDL file imports"
- Прочитайте спецификацию WSDL - Web Services Description Language (WSDL) 1.1.
- Прочитайте статью Пример XML-схемы.
- Просмотрите web-сайт организации Web Services Interoperability (WS-I).
- Загрузите IBM WebSphere Application Server Technology for Developers, Version 6.0 - предшественика программы WebSphere Application Server.
- Большое количество советов по программированию Web-служб находится на сайте developerWorks.
- Книги, охватывающие широкий диапазон технических тем, можно приобрести со скидками в Книжном магазине разработчика.
- Если вы заинтересованы в тестировании IBM-продуктов без традиционно больших начальных вложений или краткосрочных лицензий, обратите внимание на предоставляемую подписчикам developerWorks не дорогую годовую однопользовательскую лицензию на продукты WebSphere, DB2, Lotus, Rational и Tivoli - включая основанную на Eclipse WebSphere Studio IDE - для разработки, тестирования, оценки и демонстрации ваших приложений.
c # - Как получить файл WSDL из работающей службы?
Переполнение стека- Около
- Продукты
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
Работа с файлами WSDL | Документация
Что такое WSDL?
WSDL или язык описания веб-сервисов - это язык определений на основе XML. Он используется для описания функциональности веб-службы на основе SOAP.
ФайлыWSDL играют центральную роль в тестировании сервисов на основе SOAP. SoapUI использует файлы WSDL для создания тестовых запросов, утверждений и фиктивных сервисов. Файлы WSDL определяют различные аспекты сообщений SOAP:
- Разрешено ли повторение какого-либо элемента или атрибута несколько раз
- Обязательные или необязательные элементы и атрибуты
- Определенный порядок элементов, если требуется
Вы можете рассматривать файл WSDL как договор между поставщиком и потребителем услуги.SoapUI поддерживает версию 1.1 спецификации WSDL и соответствующие привязки для SOAP версий 1.1 и 1.2.
В этой статье объясняется, как работать с файлами WSDL в SoapUI. Если вы ищете пример WSDL или хотите узнать о различиях между WSDL и WADL, см. SOAP vs REST.
Работа с WSDL в SoapUI
Создать проект из WSDL
Чтобы более детально изучить файл WSDL, создайте новый проект и импортируйте образец файла WSDL:
-
В SoapUI щелкните или выберите File> New SOAP Project
-
В диалоговом окне укажите следующий URL-адрес в поле Initial WSDL:
http: // www.dneonline.com/calculator.asmx?wsdl
-
Оставьте настройки по умолчанию и нажмите ОК
SoapUI загрузит указанный WSDL и проанализирует его содержимое в следующую объектную модель:
WSDL может содержать любое количество служб (привязок). Привязка предоставляет интерфейс для указанного протокола. В приведенном выше примере файл WSDL предоставляет две привязки: одну для SOAP 1.1 («CurrencyConverterSoap») и одну для SOAP 1.2 («CurrencyConverterSoap12»).
Совет: SoapUI сохраняет файл WSDL в кэш, чтобы избежать ненужных сетевых запросов при работе с проектом. Если вы хотите, чтобы SoapUI всегда использовал удаленный файл WSDL, установите для свойства проекта Cache Definition значение False.
Изучите WSDL
Дважды щелкните службу в навигаторе, чтобы открыть редактор:
-
Вкладка Overview содержит общую информацию о файле WSDL: его URL-адрес, целевое пространство имен и т. Д.
-
Вкладка Service Endpoint содержит конечные точки для интерфейса:
Помимо конечных точек, указанных в файле WSDL, вы можете добавить конечные точки для службы. Для каждой конечной точки вы можете указать необходимую аутентификацию.
-
Вкладка WSDL Content содержит дополнительные сведения о файле WSDL
Левая панель позволяет просматривать содержимое файла.Если служба содержит несколько файлов WSDL, каждый файл отображается на отдельной вкладке.
Панель инструментов содержит следующие параметры:
-
На вкладке WS-I Compliance вы можете проверить свою веб-службу по базовому профилю WS-I (см. Ниже).
Проверить WSDL на соответствие базовому профилю WS-I
С момента создания WSDL и SOAP множество стандартов было создано и реализовано в домене веб-служб, что затрудняет согласование того, как именно эти стандарты должны использоваться в контексте веб-службы.Чтобы упростить взаимодействие между различными поставщиками веб-сервисов, Организация взаимодействия веб-сервисов (WS-I; http://www.ws-i.org) определила базовый профиль WS-I - набор правил, определяющих, как стандарты должны использоваться. SoapUI входит в состав профиля версии 1.1. Используйте его для проверки соответствия файла WSDL и сообщений SOAP.
Для проверки службы WSDL:
-
Дважды щелкните службу в навигаторе и перейдите на вкладку WS-I Compliance
-
Нажмите, чтобы запустить проверку
- или -
-
Щелкните правой кнопкой мыши службу в навигаторе
SoapUI покажет отчет проверки:
Для проверки сообщений SOAP:
-
Откройте запрос SOAP и отправьте его
-
Щелкните правой кнопкой мыши на панели XML редактора ответов и выберите Проверить соответствие WS-I
SoapUI создает соответствующий отчет, в котором указываются все ошибки соответствия для текущего обмена сообщениями запроса / ответа.
SoapUI с открытым исходным кодом
- Поддержка тестирования API SOAP и REST.
- Простое переключение между средами.
- Подробная история тестов и отчет о сравнении тестов.
SoapUI Pro
- Поддержка тестирования API SOAP, REST и GraphQL.
- Простое переключение между средами.
- Подробная история тестов и отчет о сравнении тестов.
Создание кода для WSDL
Существует множество сред разработки веб-сервисов, которые позволяют генерировать код из файла WSDL.Это может быть либо клиентский код, вызывающий операции, указанные в файле WSDL, либо заглушки для реализации самой службы. SoapUI предоставляет графический интерфейс для большинства фреймворков. Для его создания:
-
Щелкните правой кнопкой мыши службу на панели «Навигатор» и выберите нужную платформу во всплывающем меню «Создать код».
Например, если вы выберете фреймворк Apache CXF, вы увидите следующий диалог:
-
Задайте нужные настройки и нажмите Создать .SoapUI запустит соответствующий инструмент командной строки:
Примечание: Вы должны указать путь к соответствующему инструменту на странице Tools в SoapUI Preferences .
Выбранный инструмент создает файлы в указанной папке:
Следующие шаги
Работа с покрытием WSDL
Операции и запросы
Аутентификация запросов SOAP
API-интерфейсы SOAP и REST: понимание различий
Вложения и файлы SOAP
.jaxb - Как сгенерировать файл * .xjb из WSDL?
Переполнение стека- Около
- Продукты
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
java - Как разобрать файл WSDL для извлечения содержимого определенного узла
Переполнение стека- Около
- Продукты
- Для команд
- Переполнение стека Общественные вопросы и ответы
Как сгенерировать файл WSDL для веб-службы на основе SOAP?
Переполнение стека- Около
- Продукты
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
Как сгенерировать xsd из wsdl
Переполнение стека- Около
- Продукты
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами