2012-06-27 1 views
2

У меня возникли проблемы с отправкой Matlab запрос SOAP callSoapService (конечной точки, SOAPAction, сообщение) < --http: //www.mathworks.com/help/techdoc/ref/callsoapservice.htmlотправки запроса SOAP с Matlab

Например, как бы мне найти конечную точку, SOAPAction и сообщение http://www.webservicex.net/FedWire.asmx?WSDL

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

ответ

2

Это процесс, который вам нужно пройти.

Во-первых, создать класс из WDSL определения:

url = 'http://www.webservicex.net/FedWire.asmx?WSDL'; 
className = createClassFromWsdl(url); 

Это создаст директорию с именем @FedWire в текущем каталоге. Вы можете Dir этот каталог или использовать следующую команду, чтобы изучить услуги, которые Fedwire предлагает:

methods(FedWire) 

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

fw = FedWire; 
classType = class(fw) % to confirm the class type. 

Чтобы использовать услуги, например, GetParticipantByLocation, который требует Город и StateCode:

[Result, FedWireLists] = GetParticipantsByLocation(fw, 'New York', 'NY') 

Результат должен быть верным и FedWireLists является глубоко вложенной структурой, содержащей RET данных urned.

Открытие @FedWire \ GetParticipantsByLocation.m показывает, как сгенерированный код MATLAB использует createSoapMessage и callSoapService. Если служба не поддерживает запросы WSDL, то использование этих низкоуровневых функций становится необходимым.

Параметры createSoapMessage заполняются так:

  • NAMESPACE: 'http://www.webservicex.net/'
  • МЕТОД: '' GetParticipantsByLocation
  • ЗНАЧЕНИЯ: { 'Нью-Йорк ',' NY '}
  • НАЗВАНИЯ: {' Город ',' StateCode '}
  • ТИПЫ: {' {http://www.w3.org/2001/XMLSchema
  • СТИЛЬ: 'документ'

и callSoapService:

  • ENDPOINT: 'http://www.webservicex.net/FedWire.asmx'
  • SOAPAction: «HTTP: // WWW. webservicex.net/GetParticipantsByLocation '
  • СООБЩЕНИЕ: результат вызова createSoapMessage.

Следующий код делает тот же запрос с вызовами низкого уровня:

% createSoapMessage(NAMESPACE,METHOD,VALUES,NAMES,TYPES,STYLE) creates a SOAP message. 
soapMessage = createSoapMessage(... 
    'http://www.webservicex.net/', ... 
    'GetParticipantsByLocation', ... 
    {'New York', 'NY'}, ... 
    {'City', 'StateCode'}, ... 
    {'{http://www.w3.org/2001/XMLSchema}string', ... 
    '{http://www.w3.org/2001/XMLSchema}string'}, ... 
    'document') 

% callSoapService(ENDPOINT,SOAPACTION,MESSAGE) sends the MESSAGE, 
response = callSoapService(... 
    'http://www.webservicex.net/FedWire.asmx', ... 
    'http://www.webservicex.net/GetParticipantsByLocation', ... 
    soapMessage); 

%parseSoapResponse Convert the response from a SOAP server into MATLAB types. 
[result, participants] = parseSoapResponse(response) 

у меня было много проблем, заставляющей эти примеры работают, потому что я заглавной имя домена службы, как этот www.webserviceX.NET который я взял из их примера XML. Когда я перешел на нижний регистр, это сработало.

Пример использования createClassFromWsdl является адаптацией http://www.mathworks.co.uk/products/bioinfo/examples.html?file=/products/demos/shipping/bioinfo/connectkeggdemo.html

+0

Это связано с моим вопросом http://stackoverflow.com/questions/11951661/what-is-wrong-with-the-way-i-am -Использование-мыло-в-этом-specic-Matlab-примера. –