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

ユーザー名から意図的に # を削除すると機能しますが、認証されていないというエラーが発生します。

# を含むユーザー名またはパスワードを 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 に答える