Elixir使用洗涤剂和洗涤剂调用Axis2 Java SOAP Web服务 [英] Elixir call Axis2 Java SOAP Web Service with detergentex and detergent
问题描述
从Elixir开始,我尝试使用 detergentex 调用SOAP Web服务,这是Erlang库中的一个包装洗涤剂。
我可以在示例中调用SOAP Web Service洗涤剂主页没有问题: http://www.webservicex.net/convertVolume.asmx?WSDL
参数:
wsdl_url =http://www.webservicex .net / convertVolume.asmx?WSDL
pre>
action =ChangeVolumeUnit
parameters = [100,dry,centiliter]
但是当尝试调用Axis2 Java SOAP Web Service时,我遇到了一些问题。示例: http://www.thomas-bayer.com/axis2/services/BLZService?wsdl
以下列方式调用getBank
wsdl_url =http://www.thomas-bayer.com/axis2/services/BLZService?wsdl
action =getBank
parameters = [abc]
wsdl = Detergentex。 init_model(wsdl_url)
res = Detergentex.call(wsdl,action,parameters)
得到以下错误消息:
{:error,'Struct doesn\'t match model:recordtype not expected:p: getBank'}
与以下堆栈跟踪
src / erlsom_write.erl:357::erlsom_write.findAlternative / 4
src / erlsom_write.erl:258::erlsom_write.processSubType / 5
src / erlsom_write .erl:241::erlsom_write.processElementValues / 7
src / erlsom_write.erl:132::erlsom_write.struct2xml / 6
src /erlsom_write.erl:323::erlsom_write.processAlternativeValue / 8
src / erlsom_write.erl:241::erlsom_write.processElementValues / 7
src / erlsom_write.erl:116::erlsom_write.struct2xml / 6
src / erlsom_write.erl:323::erlsom_write.processAlternativeValue / 8
src / erlsom_write.erl:241::erlsom_write.processElementValues / 7
src / erlsom_write.erl:45::erlsom_write。写/ 2
src / detergent.erl:211::detergent.call_attach / 8
关于我在做什么错误的任何建议?
解决方案根据实现,前缀被添加到
init_model
。def init_model(wsdl_url,prefix \\'p')do
Detergentex.Client.init_model(wsdl_url,prefix)
end
我会建议添加一个空的前缀。
From Elixir, I am trying to call a SOAP Web Service with detergentex, which is a wrapper around the Erlang library detergent.
I can call the SOAP Web Service in the example on the detergent home page with no problems: http://www.webservicex.net/convertVolume.asmx?WSDL
Parameters:
wsdl_url = "http://www.webservicex.net/convertVolume.asmx?WSDL" action = "ChangeVolumeUnit" parameters = ["100","dry","centiliter"]
However when trying to call an Axis2 Java SOAP Web Service I am having some problems. Example: http://www.thomas-bayer.com/axis2/services/BLZService?wsdl
When calling "getBank" in the following way
wsdl_url = "http://www.thomas-bayer.com/axis2/services/BLZService?wsdl" action = "getBank" parameters = ["abc"] wsdl = Detergentex.init_model(wsdl_url) res = Detergentex.call(wsdl, action, parameters)
I get the following error message:
{:error, 'Struct doesn\'t match model: recordtype not expected: p:getBank'}
with the following stack trace
src/erlsom_write.erl:357: :erlsom_write.findAlternative/4 src/erlsom_write.erl:258: :erlsom_write.processSubType/5 src/erlsom_write.erl:241: :erlsom_write.processElementValues/7 src/erlsom_write.erl:132: :erlsom_write.struct2xml/6 src/erlsom_write.erl:323: :erlsom_write.processAlternativeValue/8 src/erlsom_write.erl:241: :erlsom_write.processElementValues/7 src/erlsom_write.erl:116: :erlsom_write.struct2xml/6 src/erlsom_write.erl:323: :erlsom_write.processAlternativeValue/8 src/erlsom_write.erl:241: :erlsom_write.processElementValues/7 src/erlsom_write.erl:45: :erlsom_write.write/2 src/detergent.erl:211: :detergent.call_attach/8
Any suggestions as to what I'm doing wrong?
解决方案According to the implementation a prefix is added on the
init_model
.def init_model(wsdl_url, prefix \\ 'p') do Detergentex.Client.init_model(wsdl_url, prefix) end
I would suggest to add an empty prefix.
这篇关于Elixir使用洗涤剂和洗涤剂调用Axis2 Java SOAP Web服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!