标签: httpi

查看Savon请求XML而不发送到服务器

我正在使用Savon gem使用类似于下面的代码来发出SOAP请求.它工作正常,但我想查看/捕获请求XML而不实际调用他们的服务器.通过在请求之后粘贴调试器行并检查客户端变量,我可以在发出请求后立即查看它.

有没有人知道在不实际发出请求的情况下查看请求XML的方法?我希望能够使用Cucumber或Rspec对模式验证XML.

client = Savon::Client.new do |wsdl, http|
  wsdl.document = "http://fakesite.org/fake.asmx?wsdl"
end

client.request(:testpostdata, :xmlns => "http://fakesite.org/") do
  soap.header = { :cAuthentication => {"UserName" => "MyName", "Password" => "MyPassword" } }
  soap.body = { :xml_data => to_xml }
end
Run Code Online (Sandbox Code Playgroud)

ruby xml soap savon httpi

28
推荐指数
7
解决办法
2万
查看次数

"HTTPI尝试使用Savon SOAP库来使用httpi适配器"错误

我正在使用Savon为SOAP服务编写Ruby接口.它似乎正在工作,但我在命令行上出现了几个DEBUG消息

D, [2011-02-15T16:33:32.664620 #4140] DEBUG -- : HTTPI tried to use the httpclient adapter, but was unable to find the library in the LOAD_PATH. Falling back using the net_http adapter now.

D, [2011-02-15T16:33:32.820863 #4140] DEBUG -- : HTTPI executes HTTP POST using the net_http adapter

D, [2011-02-15T16:33:32.664620 #4140] DEBUG -- : HTTPI tried to use the httpclient adapter, but was unable to find the library in the LOAD_PATH. Falling back using the net_http adapter now.

D, [2011-02-15T16:33:32.820863 #4140] DEBUG -- …

ruby soap savon httpi

6
推荐指数
1
解决办法
3891
查看次数

Savon SSL问题

我正在努力让Savon宝石连接到我们的服务器之一.我不断收到错误声明我无法通过ssl.我已经阅读了大量的教程和修复,但似乎都没有.

任何帮助表示赞赏 - 这将使我的星期一,如果我可以通过它:-).

错误:

D, [2011-06-20T09:43:02.002993 #10328] DEBUG -- : Retrieving WSDL from: http://path_to_wsdl:4443/sm/services/mailing/2009/03/02?wsdl
D, [2011-06-20T09:43:02.129057 #10328] DEBUG -- : HTTPI executes HTTP GET using the httpclient adapter
/.rvm/gems/ruby-1.9.2-p0/gems/httpclient-2.2.1/lib/httpclient/session.rb:276:in `connect': SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: sslv3 alert unexpected message (OpenSSL::SSL::SSLError)
Run Code Online (Sandbox Code Playgroud)

我的代码:

require 'savon'

client = Savon::Client.new "path_to_my_wsdl"

client.http.auth.ssl.cert_file = "path/cert.pem"

client.http.auth.ssl.cert_key_file = "/path/localhost.key"
client.http.auth.ssl.verify_mode = :none

client.wsse.credentials "username", "password"

client.wsdl.soap_actions
Run Code Online (Sandbox Code Playgroud)

ruby ssl ruby-on-rails savon httpi

6
推荐指数
1
解决办法
4675
查看次数

使用环境变量更改 HTTPI SSL 默认证书文件位置

根据这个页面,我可以看到 HTTPI 在哪里根据OpenSSL::X509::DEFAULT_CERT_FILE常量寻找我的 SSL 证书:

2.1.5 :008 > OpenSSL::X509::DEFAULT_CERT_FILE
 => "/usr/lib/ssl/cert.pem"
Run Code Online (Sandbox Code Playgroud)

我的证书在别处,但该页面说我可以使用环境变量更改 Ruby 查看的路径SSL_CERT_FILE。我在 .bashrc 中做到了:

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
Run Code Online (Sandbox Code Playgroud)

Rails 找到环境变量:

2.1.5 :007 > ENV['SSL_CERT_FILE']
 => "/etc/ssl/certs/ca-certificates.crt"
Run Code Online (Sandbox Code Playgroud)

但这对 OpenSSL 常量没有影响:

2.1.5 :008 > OpenSSL::X509::DEFAULT_CERT_FILE
 => "/usr/lib/ssl/cert.pem"
Run Code Online (Sandbox Code Playgroud)

那个页面设置的效果有问题SSL_CERT_FILE吗?或者常量永远不会改变并且它会影响其他一些设置?最终,没有找到证书,所以我需要知道它是什么/如何检查/如何设置它。

一等奖是一种类似的方法,默认设置由环境变量设置,因为我不想硬编码证书的路径。

ruby ssl openssl ruby-on-rails httpi

6
推荐指数
1
解决办法
2056
查看次数

SSL模式标志 - 证书验证:使用安全:无?

我正在使用Savon和HTTPi,一个Ruby soap客户端和一个Ruby HTTP客户端接口,通过SSL写一个soap请求.这是代码:

client = Savon::Client.new(original_class.constantize.wsdl_url)
client.http.auth.ssl.cert_key_file = "path_to_the_key"
client.http.auth.ssl.cert_key_password = 'secret'
client.http.auth.ssl.cert_file = "path_to_the_certification"
client.http.auth.ssl.verify_mode = :none
@response = client.request :ins0, action do
  soap.body = encoded_body
end
Run Code Online (Sandbox Code Playgroud)

这是我实现这一目标的唯一方法.但是,我知道还有其他三种验证模式,它们是:

  • :peer(SSL_VERIFY_PEER)
  • :fail_if_no_peer_cert(SSL_VERIFY_FAIL_IF_NO_PEER_CERT)
  • :client_once(SSL_VERIFY_CLIENT_ONCE)

如果我将验证模式更改为上述任何其他模式,我会收到此错误:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
Run Code Online (Sandbox Code Playgroud)

然后是我的问题(我的问题):

  • 如果我将验证模式保持为:none,我会做错吗?是否缺乏安全性?
  • 这个错误究竟意味着什么?我的代码错了或我的证书(自我分配---我在开发环境中)不好?

我阅读了有关验证模式的OpenSSL文档:

http://www.openssl.org/docs/ssl/SSL_CTX_set_verify.html

关于客户端模式下的SSL_VERIFY_NONE,说:

使用SSL_get_verify_result(3)函数进行TLS/SSL握手后,可以检查证书验证过程的结果.无论验证结果如何,握手都将继续.

我应该担心吗?我应该看看验证模式:none是危险的吗?

我问的是,因为我无法使其与其他验证模式一起工作,所以我想以现在的工作方式通过SSL功能发布soap请求.但如果这可能是危险的,我肯定不会这样做.

ruby ssl soap savon httpi

5
推荐指数
1
解决办法
3701
查看次数

标签 统计

httpi ×5

ruby ×5

savon ×4

soap ×3

ssl ×3

ruby-on-rails ×2

openssl ×1

xml ×1