Проблема в Википедии API - PullRequest
       21

Проблема в Википедии API

1 голос
/ 24 сентября 2010

У меня проблема с использованием API Википедии.Я использую этот PHP-скрипт,

<?php
  $xmlDoc = new DOMDocument();
  $xmlDoc->load("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=content&format=xml");

  print $xmlDoc->saveXML();
?>

, и у меня в браузере следующий результат.Почему?

Предупреждение: DOMDocument :: load (http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=content&format=xml) [domdocument.load]: не удалось открыть поток: ошибка HTTP-запроса! HTTP / 1.0 403 Запрещено в D: \ Program Files \ VertrigoServ \www \ wiki \ index.php в строке 3

Предупреждение: DOMDocument :: load () [domdocument.load]: предупреждение ввода-вывода: не удалось загрузить внешнюю сущность "http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=content&format=xml" в D: \ Program Files\ VertrigoServ \ www \ wiki \ index.php в строке 3

Ответы [ 2 ]

2 голосов
/ 19 сентября 2012

Для политики агента пользователя MediaWiki: http://meta.wikimedia.org/wiki/User-Agent_policy

2 голосов
/ 24 сентября 2010
<?php
  $vars = array(
    'http' => array(
      'user_agent' =>'whatever'));
  $context = stream_context_create($vars);
  libxml_set_streams_context($context);
  $xmlDoc = new DOMDocument();
  $xmlDoc->load("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=content&format=xml");

  print $xmlDoc->saveXML();
?>

Не спрашивайте, почему требуется пользовательский агент, но я вижу все больше и больше таких же вопросов здесь, в SO, которые можно исправить, предоставив User-Agent.


редактирование: Следующее также будет работать (это здесь):

<?php
  ini_set('user_agent','whatever');
  $xmlDoc = new DOMDocument();
  $xmlDoc->load("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=New_York_Yankees&rvprop=content&format=xml");

  print $xmlDoc->saveXML();
?>

Возможно, настройка PHP по умолчанию для этого user_agent была изменена?

...