使用SAVON的Ruby SOAP客户端不工作,而PHP SOAP客户端工作
您好,我测试Web服务,我正在尝试使用我的wsdl编写一个使用SAVON的客户端。我有一个名为log_process的可用操作,我试图访问它,但得到错误。我有用PHP编写的类似脚本,它工作正常。我曾尝试使用SAVON的Ruby SOAP客户端不工作,而PHP SOAP客户端工作
require 'net/http'
require "uri"
require 'savon'
client = Savon.client(wsdl: "http://abc.com/projects/shared/abc.wsdl")
@a=client.operations
puts @a
ary={0 =>"art", 1 =>"bac", 2 =>"arr"}
@result = client.call(:log_process, message:{0 =>"asdf", 1 =>"qwer", 2 =>"arr"})
puts @result
并获得以下错误
raise_soap_and_http_errors'!(SOAP-ENV:客户端)错误的请求(萨翁::的SOAPFault)
我的PHP工作液外观这样
$结果= $客户机 - > log_process(阵列(0 => $ USER_NAME,1 => $ user_pwd,2 => $ display_type));
任何想法什么将是相当于这个ruby或我是否以正确的方式调用操作?
尝试:
@result = client.call(:log_process, message:["asdf", "asg", "arr"])
在PHP代码,你只发送1参数,其阵列
我试过这个以及获得'raise_soap_and_http_errors!':(SOAP-ENV:Server)过程'字符串'不存在(Savon :: SOAPFault)错误 –
我知道这是晚了,但我在试图建立完全相同的问题使用savon到肥皂服务器的肥皂请求我已经广泛使用PHP肥皂服务器进行过工作。我发现另一个帖子与此有关,并且似乎添加了message_tag
选项修复了它。
这是因为在我的情况下,WSDL是在XML期待functionNameRequest
,但萨翁因为只有通过设置message_tag
到functionNameRequest
发送funcionName
> SOAP服务器能够正确地映射正在请求的功能。
这是线程帮助我引用如下https://github.com/savonrb/savon/issues/520相关代码:
嗨, 我只是分享此情况下,它是非常有用的。
我使用的是savon 2.3.0,我猜gem有一些问题,从我的wsdl中自动识别参数。我不知道SOAP,这是我第一次使用它。
我处理TradeTracker的WSDL
用下面的代码我得到它的工作:
client = Savon.client do
wsdl "http://ws.tradetracker.com/soap/affiliate?wsdl"
namespace_identifier :ns1
end
credentials = {
customerID: 123123,
passphrase: "123123123"
}
response = client.call(:authenticate, message_tag: :authenticate, message: credentials)
你为什么叫'上)'操作的结果('log_process'?我猜你想要'client.log_process'。 –
尝试过,以及尝试@result = client.call(:log_process,消息:{0 =>“asdf”,1 =>“asg”,2 =>“arr”}) –
更新了问题现在我得到(SOAP-ENV:客户端)错误的请求(Savon :: SOAPFault) –