2010-09-11 6 views

Répondre

15

À partir du source, il semble que vous puissiez simplement spécifier un utilisateur et un mot de passe dans le cadre de votre objet de requête.

Avez-vous essayé quelque chose comme:

r = Request.new({:user => "username", :password => "password"}) 

Aussi, si vous regardez vers le bas dans la section Shell du ReadMe il a un exemple de le spécifier dans le cadre de restshell.

$ restclient https://example.com user pass 
>> delete '/private/resource' 
+0

Pensez à inclure le module en cours d'utilisation pour améliorer cela. par exemple. 'RestClient :: Request' et en ajoutant plus de contexte pour rendre l'exemple que vous avez donné entièrement fonctionnel –

40

Le plus simple est d'intégrer les détails dans l'URL:

RestClient.get "http://username:[email protected]" 
+0

Je cherchais comment effectuer une authentification sans avoir à initialiser une RestClient :: Request. +1 pour l'utilisation de la méthode RestClient.get MAIS le nom d'utilisateur et le mot de passe ne sont-ils pas nécessaires pour s'échapper? On dirait que ce n'est pas aussi facile que ça en a l'air. – AgostinoX

+2

Que faire si mon nom d'utilisateur a un caractère '@'? – Sai

+0

... mais si vous avez des caractères spéciaux comme # dans votre mot de passe, vous obtenez l'excetion: InvalidURIError: mauvais URI (n'est pas URI?) – territorial

28

Voici un exemple de code de travail où je soutiens basicauth en option, mais ne nécessitent pas l'utilisateur et le mot de passe être intégrés dans l'URL:

def get_collection(path) 
    response = RestClient::Request.new(
    :method => :get, 
    :url => "#{@my_url}/#{path}", 
    :user => @my_user, 
    :password => @my_pass, 
    :headers => { :accept => :json, :content_type => :json } 
).execute 
    results = JSON.parse(response.to_str) 
end 

Prenez note si @my_user et @mypass ne sont pas instanciés, cela fonctionne très bien sans basicauth.

Questions connexes