Elixir使用洗涤剂和洗涤剂调用Axis2 Java SOAP Web服务 [英] Elixir call Axis2 Java SOAP Web Service with detergentex and detergent

查看:306
本文介绍了Elixir使用洗涤剂和洗涤剂调用Axis2 Java SOAP Web服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从Elixir开始,我尝试使用 detergentex 调用SOAP Web服务,这是Erlang库中的一个包装洗涤剂



我可以在示例中调用SOAP Web Service洗涤剂主页没有问题: http://www.webservicex.net/convertVolume.asmx?WSDL



参数:

  wsdl_url =http://www.webservicex .net / convertVolume.asmx?WSDL
action =ChangeVolumeUnit
parameters = [100,dry,centiliter]
pre>

但是当尝试调用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆