ruby-on-rails - 如何在 Ruby 中从 Savon 调用此安全 Web 服务 WSDL?

标签 ruby-on-rails ruby soap savon

我有一些用于访问安全网络服务的有效 PHP 示例(见下文)。我正在尝试使用 Savon 访问网络服务。首先,我试过:

>> client = Savon::Client.new("https://secure.service.com/soa/soap/?WSDL")
=> #<Savon::Client:0x114053358 @wsdl=#<Savon::WSDL:0x1140532b8 @request=#<Savon::Request:0x1140532e0 @endpoint=#<URI::HTTPS:0x114053038 URL:https://secure.service.com/soa/soap/?WSDL>, @proxy=#<URI::Generic:0x114052fc0 URL:>>>, @request=#<Savon::Request:0x1140532e0 @endpoint=#<URI::HTTPS:0x114053038 URL:https://secure.service.com/soa/soap/?WSDL>, @proxy=#<URI::Generic:0x114052fc0 URL:>>>

第一个问题,SOAP 操作似乎是空的:

>> client.wsdl.soap_actions
warning: peer certificate won't be verified in this SSL session
=> []

并尝试像这样使用 wsse 凭据访问网络服务:

>> client = Savon::Client.new do |wsdl, http|
?>   wsdl.document = "https://secure.service.com/soa/soap/?WSDL"
>>   wsdl.wsse.credentials "user", "encrypted-md5-string"
>> end

结果:

ArgumentError: wrong number of arguments (0 for 1)

可以从下面这个使用 Ruby 的 PHP 示例中得到什么来设置对网络服务的一些基本请求?

PHP 示例:

$foo = "+++hashkey+++";

$authUser = "user";
$authPass = "password";

$passphrase = md5($foo.$authPass.".wsdl");

echo "User: ".$authUser."<br>";
echo "Passphrase: ".$foo.$authPass.".wsdl<br>";
echo "Digest Passphrase: ".$passphrase."<br>";

$soapClient = new SoapClient( "https://secure.service.com/soa/soap/?WSDL", 
     array( "exceptions"  => true,
            "cache_wsdl" => WSDL_CACHE_NONE,
            "login" => $authUser,
            "password" => $passphrase));

$param = new stdClass();

$param->bankaccount = "1111111";
$param->bankcountry = "US";

$soaMethod = "SoaBank.getBank"; 
$soaParams = array($param);
$result = $soapClient->__soapCall($soaMethod, $soaParams);

print "<h1>Result</h1>";
print_r($result);

最佳答案

对于 Savon 2,您可以使用 :ssl_verify_mode => :none

Savon.client(:wsdl => 'https://blahService?wsdl', :ssl_verify_mode => :none)

关于ruby-on-rails - 如何在 Ruby 中从 Savon 调用此安全 Web 服务 WSDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098761/

相关文章:

ruby-on-rails - 预编译时的 Sass undefined variable

ruby-on-rails - 为什么 Heroku 拒绝这个 git push?

ruby-on-rails - Rails 使用地理编码位置确定 elasticsearch 范围

java - 有关 Java SOAP DocuSign 的任何文档或代码

Android SOAP 解析示例

ruby-on-rails - "Error: PDF could not be generated!"与 WickedPDF

ruby-on-rails - image_tag 不使用 asset_host

ruby-on-rails - 构建新的 Rails 应用程序错误加载 'sqlite3' 没有明显的写入版本

css - 使用 gulp.task 将 .scss 更改为 .css 时,如何为行注释打开 gulp-compass 配置选项?

java - 如何根据WSDL开启验证-spring boot和spring-ws