87 votes

Utilisation de Net :: HTTP.get pour une URL https

J'essaie d'utiliser Net::HTTP.get() pour une URL https :

 @data = Net::HTTP.get(uri, Net::HTTP.https_default_port())

Cependant, j'obtiens le résultat suivant lorsque j'essaie d'imprimer les résultats :

ne peut pas convertir URI :: HTTPS en chaîne

Quel est le problème? J'utilise Ruby 1.8.7 (OS X)

158voto

stef Points 6478

Réponse originale :

 uri = URI.parse("https://example.com/some/path")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
@data = http.get(uri.request_uri)

Comme indiqué dans les commentaires, c'est plus élégant :

 require "open-uri"
@data = URI.parse("https://example.com/some/path").read

4voto

Vlad Khomich Points 3296

cela devrait ressembler à:

 uri.port = Net::HTTP.https_default_port()
@data = Net::HTTP.get(uri)

3voto

Justin Tanner Points 5437

Identique à la réponse de stef, mais avec le @data contenant le corps de l'URI demandé :

 http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
@data = response.body

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X