gpt4 book ai didi

ruby-on-rails - 使用 SAVON 的 Ruby SOAP 客户端不工作,而 PHP SOAP 客户端工作

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:12 25 4
gpt4 key购买 nike

你好,我正在测试一些 Web 服务,我正在尝试使用 SAVON 和我的 WSDL 编写一个客户端。我有一个名为 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-ENV:Client) Bad Request (Savon::SOAPFault)

我的 php 工作解决方案如下所示

$result = $client->log_process(array(0=>$user_name,1=>$user_pwd,2=>$display_type));

知道与此等效的 ruby​​ 是什么,还是我以正确的方式调用该操作?

最佳答案

我知道这已经晚了,但我在尝试使用 savon 向我广泛使用 PHP Soap 服务器的 soap 服务器设置 soap 请求时遇到了完全相同的问题。我找到了另一篇与此相关的帖子,似乎添加了 message_tag选项修复了它。

这是因为在我的例子中,WSDL 期望 functionNameRequest在 xml 中,但 savon 只发送 funcionName通过设置 message_tagfunctionNameRequest >soap 服务器能够正确映射所请求的功能。

这是帮助我解决问题的话题 https://github.com/savonrb/savon/issues/520相关代码引用如下:

Hi, I'm just sharing this in case it's useful.

I'm using savon 2.3.0 and I guess the gem had some problems identifying parameters >automatically from my wsdl. I have no idea about SOAP and this is the first time I'm >actually using it.

I'm dealing with TradeTracker's WSDL

With the following code I got it working:

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)

关于ruby-on-rails - 使用 SAVON 的 Ruby SOAP 客户端不工作,而 PHP SOAP 客户端工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17721437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com