Чтение ответа REST API в PHP - PullRequest
3 голосов
/ 10 ноября 2011

Я пытаюсь прочитать Raven SEO Tools API.Это REST API, и в настоящее время он выполняет резервное копирование данных в виде XML (или JSON, если я выберу), когда я просто запрашиваю URL через веб-браузер.Каков наилучший способ получить ответ от их сервера в мой собственный PHP-скрипт, чтобы я потом поиграл с ним.

Любая помощь высоко ценится

Приветствия

Ответы [ 4 ]

5 голосов
/ 10 ноября 2011

Если вам нужно только получить URL-адрес и проанализировать его информацию. Самый простой способ - это комбинация curl / JSON. Обратите внимание, что синтаксический анализ JSON выполняется быстрее, чем анализ XML.

  1. http://www.php.net/manual/en/function.curl-exec.php
  2. http://www.php.net/manual/en/function.json-decode.php

Что-то простое, как:

$url = "http://api.raventools.com/api?key=B1DFC59CA6EC76FF&method=domains&format=json";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 4);
$json = curl_exec($ch);
if(!$json) {
    echo curl_error($ch);
}
curl_close($ch);
print_r(json_decode($json));

Но если вам нужно вызывать другие методы из этого API, такие как DELETE / PUT и т. Д. Тогда иметь REST-клиент в PHP - более элегантное решение. Сравнение этих клиентов можно найти в PHP REST Clients

Я создал этот код специально для Raven API https://github.com/stephenyeargin/raventools-api-php

Пример кода:

require 'path/to/raventools-api-php/raventools-api-php.class.php';
$Raven = new RavenTools( 'B1DFC59CA6EC76FF' );
$method = 'domains';
$options = array('format'=> 'json');
$responseString = $Raven->getJSON($method, $options);
print_r(json_decode($responseString));
0 голосов
/ 10 ноября 2011

Вы можете использовать любой из них, но я думаю, что JSON является самым простым и более простым, если вы не используете SimpleXML. Решение зависит от сложности ваших данных.

Учитывая, что JSON, возвращаемый API, является действительным, вы можете преобразовать его в массив или объект с помощью PHP-функции json_decode () .

<?php

# retrieve JSON from API here...
# i.e. it is stored in $data as a string

$object = json_decode($data);
$array = json_decode($data, true);

?>

В SimpleXML это будет выглядеть следующим образом:

<?php

$object = simplexml_load_string($data);

?>
0 голосов
/ 10 ноября 2011

Класс Pecl HTTPRequest - очень хороший клиент, я использую его для нескольких проектов.http://pecl.php.net/package/pecl_http

Другим довольно классным клиентом является клиент Buzz https://github.com/kriswallsmith/Buzz Он также хорошо работает с Symfony2, если он вам интересен:)

0 голосов
/ 10 ноября 2011

cUrl

cUrl - это инструмент командной строки для получения или отправки файлов с использованием синтаксиса URL.

curl -o example.html www.example.com

file_get_contents

<?php
$homepage = file_get_contents('http://www.example.com/api/parameters');
echo $homepage;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...