RestClient基本身份验证,用户名为#

时间:2013-03-22 10:14:10

标签: ruby basic-authentication rest-client

守护程序访问REST API时遇到问题。

访问需要基本身份验证。用户名和密码是固定的,无法更改。

问题似乎是,用户名如下所示:#ws+R4nd0mS7r1n

我像这样访问API:

resource = RestClient::Resource.new( "#{base_url}/failover/#{failover_ip}", { :user => user_name, :password => user_password})
response = resource.get

这给我带来了错误的URI错误:

bad URI(absolute but no path): https://#ws+R4nd0mS7r1n:RaNdOmPaSsWoRd@robot-ws.your-server.de/failover/11.11.11.11

当我从它的用户名中删除#时,我会收到NOT Authenticated错误。

有没有办法将包含#的用户名或密码传递给restclient? 手动将完整的URI传递给.get也不起作用。

1 个答案:

答案 0 :(得分:3)

我没有得到同样的错误。你安装了什么版本的rest-client

你可能只是能够更新版本来解决你的问题(我测试了宝石的1.6.7版本)

或者,这可以通过直接写入Authorization标头(无论如何最终都是这个数据)来解决URI失败:

require 'base64'
auth = 'Basic ' + Base64.encode64( "#{user_name}:#{user_password}" ).chomp
resource = RestClient::Resource.new( "#{base_url}/failover/#{failover_ip}", { :headers => { 'Authorization' => auth } } )
resource.get