Ruby 使用HTTP身份验证的Savon HTTPS请求

Ruby 使用HTTP身份验证的Savon HTTPS请求,ruby,soap,soap-client,savon,httpi,Ruby,Soap,Soap Client,Savon,Httpi,我已经使用savon编写了一个与soapapi的集成。我遇到的问题似乎只是某些OSs的问题。我之所以这么说,是因为相同的代码可以在CentOS6和MacOSX上使用,但它拒绝在Ubuntu12.04上使用。我使用的代码是: @client = Savon.client do wsdl "mywsdl" basic_auth ["username", "password"] end @client.call(:set_sessi

我已经使用savon编写了一个与soapapi的集成。我遇到的问题似乎只是某些OSs的问题。我之所以这么说,是因为相同的代码可以在CentOS6和MacOSX上使用,但它拒绝在Ubuntu12.04上使用。我使用的代码是:

@client = Savon.client do
  wsdl "mywsdl"
  basic_auth ["username", "password"]
end

@client.call(:set_session_parameters, message: {viewSettings: {rollingPeriod: "Today", shiftStart: "25200000", statisticsRange: "CurrentDay",timeZone: -21600000}})
我得到的错误是:

[2013-06-03T18:22:31.784007 #16304] DEBUG -- : HTTPI POST request to api.five9.com (httpclient)
I, [2013-06-03T18:22:42.413083 #16304]  INFO -- : SOAP response (status 401)
D, [2013-06-03T18:22:42.413378 #16304] DEBUG -- : <html><head><title>JBoss Web/2.1.3.GA - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 401 - No user credentials found</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>No user credentials found</u></p><p><b>description</b> <u>This request requires HTTP authentication (No user credentials found).</u></p><HR size="1" noshade="noshade"><h3>JBoss Web/2.1.3.GA</h3></body></html>
Savon::HTTPError: HTTP error (401): <html><head><title>JBoss Web/2.1.3.GA - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 401 - No user credentials found</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>No user credentials found</u></p><p><b>description</b> <u>This request requires HTTP authentication (No user credentials found).</u></p><HR size="1" noshade="noshade"><h3>JBoss Web/2.1.3.GA</h3></body></html>
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/response.rb:71:in `raise_soap_and_http_errors!'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/response.rb:13:in `initialize'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/operation.rb:53:in `new'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/operation.rb:53:in `call'
    from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/client.rb:36:in `call'
[2013-06-03T18:22:31.784007#16304]调试--:HTTPI对api.five9.com(httpclient)的POST请求
一、 [2013-06-03T18:22:42.413083#16304]信息--:SOAP响应(状态401)
D、 [2013-06-03T18:22:42.413378#16304]调试--:JBoss Web/2.1.3.GA-错误报告HTTP状态401-未找到用户凭据
键入状态报告消息未找到用户凭据说明此请求需要HTTP身份验证(未找到用户凭据)。


JBoss Web/2.1.3.GA Savon::HTTPError:HTTP error(401):JBoss Web/2.1.3.GA-错误报告HTTP状态401-未找到用户凭据键入状态报告

未找到用户凭据说明此请求需要HTTP身份验证(未找到用户凭据)。


JBoss Web/2.1.3.GA from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/response.rb:71:in'raise_soap_和_http_errors!' from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/response.rb:13:in'initialize' from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/operation.rb:53:in“new” from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/operation.rb:53:in'call' from/usr/local/rvm/gems/ruby-1.9.3-p194/gems/savon-2.2.0/lib/savon/client.rb:36:in'call'
就像我在其他OSs上说的,代码运行良好。我需要安装一些东西才能在Ubuntu12.04上运行吗

这绝对不是用户名和密码错误,因为一个完全相同的副本可以在另一个操作系统上工作。 在此问题上的任何帮助都将不胜感激。谢谢

HTTP错误(401)表示您尝试授权失败。通常是用户ID/密码有问题。在返回的HTML中,它进一步指出:

HTTP Status 401 - No user credentials found

我认为您需要确保您的用户名和密码是正确的。

问题在于HTTPI使用的HTTP客户端。由于某些原因,HTTPCLIENT无法满足我的需要。所以我只是
gem卸载httpclient


在那之后,HTTPI会自动选择netu-http,它的工作方式就像一个champ

我已经仔细检查了用户名和密码。另外,我把它从一个远程存储库拉到两个不同的操作系统上,它在一个操作系统上工作,在另一个操作系统上抛出这个错误。为了扩展它,httpclient不会在第一次请求时设置
授权
头。