小编Viv*_*har的帖子

Rails 3.1 Savon soap请求给出超时::错误:超时::错误使用curl我得到响应

我在使用rails 3.1中的savon构建soap客户端时遇到了麻烦.但是当我尝试从curl命令行发出请求时,我能够成功获得响应.我从命令行的curl请求看起来像这样

curl -d @Downloads/test.xml  -H "content-type: text/xml;charset=UTF-8" -H "SOAPAction: http://services.bamnetworks.com/registration/identityPoint/create" "https://qaservices.bamnetworks.com/ws/services/IdentityPointService" -v
Run Code Online (Sandbox Code Playgroud)

从中我得到了这样的完美回应.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header /><soapenv:Body><identityPoint_create_response xmlns="http://services.bamnetworks.com/registration/types/1.6"><status><code>-2000</code><message> [Duplicate credential constraint violated] [com.bamnetworks.registration.types.exception.DuplicateCredentialException]</message><exceptionClass>com.bamnetworks.registration.types.exception.DuplicateCredentialException</exceptionClass>
Run Code Online (Sandbox Code Playgroud)

但是当我每次尝试向Savon客户提出请求时

HTTPI executes HTTP POST using the net_http adapter
Timeout::Error: Timeout::Error
Run Code Online (Sandbox Code Playgroud)

我的Savon请求看起来像这样

client = Savon::Client.new do |wsdl, http|
  http.auth.ssl.verify_mode = :none
  wsdl.document = "https://qaservices.bamnetworks.com/ws/services/IdentityPointService?wsdl"
end

begin

response = client.request :ns, :identityPoint_create_request do |soap, wsdl, http|

      http.headers['SOAPAction'] = 'http://services.bamnetworks.com/registration/identityPoint/create'
      http.headers = { "Content-Length" => "0", "Connection" => "Keep-Alive" }
      soap.namespaces["xmlns:ns0"]="http://services.bamnetworks.com/application/types/1.0"

      soap.header = {
          "ns0:appCredentials" => {
              "ns0:name"=>"XXXXXXX",
              "ns0:password"=>"XXXXXXXXX" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails soap-client savon ruby-on-rails-3 ruby-on-rails-3.1

7
推荐指数
1
解决办法
1780
查看次数