2010-10-27 2 views
1

J'essaie d'obtenir une page au hasard de Wikipedia, en utilisant WikiMedia's documented Random method.Pourquoi est-ce que je continue d'obtenir ce code d'erreur "help" de Wikipedia API?

Safari n'a pas de problème pour la page: http://en.wikipedia.org/w/api.php?action=query&list=random&rnlimit=1&rnnamespace=0&format=json

Mais quand je fais, en utilisant Ruby HTTP/Net, je continue à obtenir cette page d'erreur exacte: http://en.wikipedia.org/w/api.php (avec le même code d'erreur « aide » et informations vide).

url = URI.parse('http://en.wikipedia.org/w/api.php?action=query&list=random&rnlimit=1&rnnamespace=0&format=json') 
req = Net::HTTP::Get.new(url.path, "User-Agent" => "ourbandiscalled") 
res = Net::HTTP.start(url.host, url.port) {|http| http.request(req)} 

Quel est le problème avec mon code?

Merci,

Kevin

Répondre

3

url.path renvoie uniquement "/w/api.php" si vous perdez la chaîne de requête à partir de votre URL dans la requête GET. Vous pouvez utiliser url.request_uri à la place, par exemple.

req = Net::HTTP::Get.new(url.request_uri, "User-Agent" => "ourbandiscalled") 

La chaîne de requête sur son propre est disponible en url.query. En résumé:

irb(main):045:0> url.path 
=> "/w/api.php" 
irb(main):046:0> url.query 
=> "action=query&list=random&rnlimit=1&rnnamespace=0&format=json" 
irb(main):047:0> url.request_uri 
=> "/w/api.php?action=query&list=random&rnlimit=1&rnnamespace=0&format=json" 
+0

Parfait! Je ne sais pas pourquoi je ne pouvais pas le trouver dans la documentation. Merci beaucoup, mon mini-site est maintenant disponible: http://ourbandiscalled.com :-) –

Questions connexes