ruby - 为什么我不断从维基百科 API 收到此 "help"错误代码?

标签 ruby mediawiki

我正在尝试使用 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/

相关文章:

ruby - 扩展 ruby 对象; extend_object 回调阻止实例方法被扩展

ruby - 从模型访问 Sinatra 设置

CSS 和 MediaWiki - 使用绝对和相对 DIV 正确自动扩展 DIV

api - 如何在Wiki API中获取图像URL?

ruby-on-rails - 检查日期是否超过一天、超过一年等?

mysql - 为什么是语法错误?

ruby - 字符串插值和 URI.parse 错误?

mediawiki - 将 SandcaSTLe 帮助文件生成器输出(网站)转换为 MediaWiki 格式

mediawiki - 如何指定 {{{1}}} 的内容以避免 wiki 标记

php - 每周同步两个 MediaWiki?