2010-05-09 6 views

Répondre

11

Ressaisissez votre code comme ceci:

uri = URI.parse(url) 
result = Net::HTTP.start(uri.host, uri.port) { |http| http.get(uri.path) } 
puts result.code 
puts result.body 

qui imprimera le code d'état suivi du corps.

+0

Merci! J'ai essayé ceci mais result.status n'a pas fonctionné. Au lieu de cela, j'ai vérifié result.class.name == "HTTPOK", ça fait l'affaire :-) –

+1

Désolé, ça aurait dû être 'result.code', pas' result.status'. J'ai mis à jour ma réponse. – Theo

+0

Note: l'URI est dans le module 'net/http' –

1

Comme vous le savez, votre code retournera toujours le corps de la réponse, qu'il y ait ou non une erreur. Afin de tester le code de réponse, utilisez la réponse de Théo, et ce qui suit si la déclaration, par exemple:

if result.code.to_i < 400 
    puts "success" 
end 

Cet exemple convertit le code (qui est une chaîne) à un nombre entier, et traite réoriente et divers 200 codes comme réussi.

Voir ce pour les différents codes retour: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Questions connexes