1

我在访问 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 也不起作用。

4

1 回答 1

3

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

您可能只需更新版本即可解决您的问题(我使用 gem 的 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
于 2013-03-22T12:21:26.570 回答