Почему ребол не работает с API-интерфейсом stackoverflow? - PullRequest
2 голосов
/ 17 июля 2010

Если я наберу в браузере (см. https://stackapps.com/questions/2/getting-started-with-the-api):

http://api.stackoverflow.com/1.0/stats

возвращает

{
  "statistics": [
    {
      "total_questions": 800830,
      "total_unanswered": 131356,
      "total_accepted": 500653,
      "total_answers": 2158752,
      "total_comments": 3125048,
      "total_votes": 7601765,
      "total_badges": 798091,
      "total_users": 289282,
      "questions_per_minute": 1.50,
      "answers_per_minute": 3.12,
      "badges_per_minute": 1.20,
      "views_per_day": 455215.44,
      "api_version": {
        "version": "1.0",
        "revision": "2010.7.17.1"
      },
      "site": {
        "name": "Stack Overflow",
        "logo_url": "http://sstatic.net/stackoverflow/img/logo.png",
        "api_endpoint": "http://api.stackoverflow.com",
        "site_url": "http://stackoverflow.com",
        "description": "Q&A for professional and enthusiast programmers",
        "icon_url": "http://sstatic.net/stackoverflow/apple-touch-icon.png",
        "state": "normal",
        "styling": {
          "link_color": "#0077CC",
          "tag_foreground_color": "#3E6D8E",
          "tag_background_color": "#E0EAF1"
        }
      }
    }
  ]
}

Если я наберу это в консоли rebol:

read http://api.stackoverflow.com/1.0/stats

Возвращает некоторые странные двоичные символы.

Ответы [ 3 ]

3 голосов
/ 18 июля 2010
probe load to-string gunzip to-string read/binary http://api.stackoverflow.com/1.0/stats
connecting to: api.stackoverflow.com
{
  "statistics": [
    {
      "total_questions": 801559,
      "total_unanswered": 131473,
      "total_accepted": 501129,
      "total_answers": 2160171,
      "total_comments": 3127759,
      "total_votes": 7607247,
      "total_badges": 798608,
      "total_users": 289555,
      "questions_per_minute": 0.93,
      "answers_per_minute": 1.83,
      "badges_per_minute": 0.73,
      "views_per_day": 455579.60,
      "api_version": {
        "version": "1.0",
        "revision": "2010.7.17.2"
      },
      "site": {
        "name": "Stack Overflow",
        "logo_url": "http://sstatic.net/stackoverflow/img/logo.png",
        "api_endpoint": "http://api.stackoverflow.com",
        "site_url": "http://stackoverflow.com",
        "description": "Q&A for professional and enthusiast programmers",
        "icon_url": "http://sstatic.net/stackoverflow/apple-touch-icon.png",
        "state": "normal",
        "styling": {
          "link_color": "#0077CC",
          "tag_foreground_color": "#3E6D8E",
          "tag_background_color": "#E0EAF1"
        }
      }
    }
  ]
}
2 голосов
/ 17 июля 2010

REBOL игнорирует заголовок ответа Content-Encoding: gzip, который, как представляется, использовать stackoverflow непреодолимо, независимо от того, что вы добавили в заголовок Accept-Encoding:.В Unix wget и curl имеют ту же проблему, но я могу сделать это, чтобы увидеть намеченный контент:

curl http://api.stackoverflow.com/1.0/stats | zcat

Есть ли у REBOL способ распаковать gzip-контент?

1 голос
/ 17 июля 2010

На основе http://www.mail-archive.com/rebol-bounce@rebol.com/msg03531.html

>> do http://www.rebol.org/download-a-script.r?script-name=gunzip.r
connecting to: www.rebol.org
Script: "gunzip" (30-Dec-2004)
>> print to-string gunzip read http://api.stackoverflow.com/1.0/stats
connecting to: api.stackoverflow.com
{
  "statistics": [
    {
      "total_questions": 801316,
      "total_unanswered": 131450,
      "total_accept���������������������accept������E531450,
      "tocomment312672�vote7605283badge7984187946531450,
  tal_unans_per_minutet.0531450,
....

почти работает :) так что основной код весь там, просто не выставлен должным образом ... действительно жаль ...

но stackoverflow не годится, если вы не жалуетесь на спецификации http и игнорируете заголовок accept-encoding ...

...