Почему я продолжаю получать этот «справочный» код ошибки из API Википедии? - PullRequest
1 голос
/ 27 октября 2010

Я пытаюсь получить случайную страницу из Википедии, используя Документированный случайный метод WikiMedia .

У 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 (с тем же кодом ошибки «help» и пустой информацией).

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)}

Чтоне так с моим кодом?

Спасибо,

Кевин

1 Ответ

3 голосов
/ 27 октября 2010

url.path возвращает только "/w/api.php", поэтому вы теряете строку запроса из своего URL в запросе GET.Вместо этого вы можете использовать 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"
...