你好,我正在测试一些web服务,我试图用我的WSDL使用SAVON编写一个客户机。我有一个名为log_process的可用操作,我试图访问该操作,但得到了错误。我有一个类似的用PHP编写的脚本,它运行得很好。我试过了
require 'net/http'
require "uri"
require 'savon'
client = Savon.client(wsdl: "http://somedomain.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:Client)糟糕的请求(Savon::SOAPFault)
我的php工作解决方案如下所示
$client->log_process(array(0=>$user_name,1=>$user_pwd,2=>$display_type));= $result
你知不知道红宝石相当于什么,或者我是否以正确的方式调用了操作?
发布于 2014-11-02 20:54:24
我知道这已经晚了,但我也遇到了同样的问题,试图使用savon将soap请求设置到我广泛使用的PHP soap服务器上的Soap服务器。我发现了另一个与此相关的帖子,添加message_tag
选项似乎解决了这个问题。
这是因为在我的示例中,WSDL期望xml中的functionNameRequest
,但是savon只通过将message_tag
设置为functionNameRequest
( >soap服务器)才能正确地映射所请求的函数。
这是帮助我完成下面引用的https://github.com/savonrb/savon/issues/520相关代码的线程:
嗨,我只是分享一下,万一有用的话。 我使用的是Savon2.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)
发布于 2013-07-18 08:50:47
尝试:
@result = client.call(:log_process, message:["asdf", "asg", "arr"])
在PHP代码中,您只发送一个参数,它是一个数组
https://stackoverflow.com/questions/17721437
复制相似问题