我正在尝试使用 WikiMedia's documented Random method 从维基百科获取随机页面.
Safari 获取页面没有问题:http://en.wikipedia.org/w/api.php?action=query&list=random&rnlimit=1&rnnamespace=0&format=json
但是当我这样做时,使用 Ruby HTTP/Net,我不断收到这个确切的错误页面:http://en.wikipedia.org/w/api.php (具有相同的“帮助”错误代码和空信息)。
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)}
我的代码有什么问题?
谢谢,
凯文
最佳答案
url.path
仅返回 "/w/api.php"
因此您在 GET 请求中丢失了 URL 中的查询字符串。您可以使用 url.request_uri
代替,例如
req = Net::HTTP::Get.new(url.request_uri, "User-Agent" => "ourbandiscalled")
查询字符串本身可作为 url.query
使用。总结:
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"
关于ruby - 为什么我不断从维基百科 API 收到此 "help"错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4031982/