Lorsque l’on utilise des url, il est plus intéressant d’utiliser la librairie (ou module) uri qui contient plusieurs méthodes spécifiques aux url.
Si on veut afficher le contenu d’une page web par exemple :
require 'net/http' require 'uri' mon_adresse = URI.parse('http://29minparjour.com') puts Net::HTTP.get mon_adresse
J’inclus les deux modules, je crée un objet uri où je parse mon url 29minparjour.com (la méthode .parse crée une instance d’une sous-classe d’URI). Je peux ensuite appeler (comme hier) ma classe HTTP avec maintenant en paramètre mon url. Le résultat s’affiche dans la console (j’ai fait un “puts” avec un “.get” pour changer du “.get_print”, plus direct).
Dans ma console je vois du HTML :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title> 29 minutes par jour : un blog anti-procrastination</title>
Du POST
On peut même faire une requête POST avec la classe HTTP. Je vais essayer de faire une recherche Google comme ça :
require 'net/http' require 'uri' puts Net::HTTP.post_form URI.parse('http://www.google.fr/search'),{ "q" => "ruby"}
A priori, ça devrait marcher. Mais en l’occurence, Google est assez malin pour empêcher ce genre de requête. Donc, dans l’absolu, ça devrait marcher si le serveur distant le permettait.
Flux RSS