Я пытаюсь вызвать WebService через SOAP, используя Erlang и YAWS (в частности, модуль yaws_soap_lib).Примеры, опубликованные на http://yaws.hyber.org/soap_intro.yaws, работают для меня.
Однако, при попытке вызвать мой собственный веб-сервис, YAWS дает сбой.Первой проблемой были партнерские ссылки в WSDL, которые были размещены там из-за BPEL, стоящего за этим сервисом.Я удалил их (пока).
К сожалению, я столкнулся с другой проблемой: упомянутый WSDL имеет пустой тег .Сейчас я не очень хорошо знаком со спецификацией WSDL и SOAP, поэтому мой вопрос в том, является ли
- Erlang SOAP библиотекой, которая не может обработать пустой тег или
- плохо сгенерированный WSDL?
Кто-нибудь знает лучшую библиотеку Erlang для обработки SOAP?Я взглянул на erlsoap, но он не поддерживает WSDL.
EDIT: ошибка, вызванная упомянутым WSDL:
<code>
::error:function_clause
in function erlsom_add:add_model/2
called as add_model({model,[{type,'_document',sequence,
[{el,[{alt,'soap:Envelope','soap:Envelope',...},
{alt,'soap:Header',...},
{alt,...},
{...}],
1,1,1}],
[],undefined,undefined,1,1,1,false,...},
{type,'soap:detail',sequence,
[{el,[{alt,'#any',...},{alt,...},{...}|...],0,unbound,1}],
[],
{anyAttr,"lax","##any",[...]},
undefined,2,1,1,...},
{type,'soap:Fault',sequence,
[{el,[{alt,...}],1,1,...},
{el,[{...}],1,...},
{el,[...],...},
{el,...}],
[],undefined,undefined,5,1,...},
{type,'soap:Body',sequence,
[{el,[{...}|...],0,...}],
[],
{anyAttr,[...],...},
undefined,2,...},
{type,'soap:Header',sequence,
[{el,[...],...}],
[],
{anyAttr,...},
undefined,...},
{type,'soap:Envelope',sequence,[{el,...},{...}|...],[],{...},...}],
[{ns,"http://schemas.xmlsoap.org/soap/envelope/","soap"},
{ns,"http://www.w3.org/2001/XMLSchema","xsd"}],
"http://schemas.xmlsoap.org/soap/envelope/",[]},undefined)
in call from yaws_soap_lib:initModel2/5
Для тех, кто знаком с исходным кодом:Проблема в том, что массив Xsds, возвращаемый функцией getXsdsFromWsdl, пуст.