守护程序访问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也不起作用。
答案 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