在PHP中读取REST API响应

时间:2011-11-10 11:50:10

标签: php xml api rest

我正在尝试阅读Raven SEO Tools API。它是一个REST API,当我只是通过Web浏览器请求URL时,它以XML(或我选择的JSON)的形式提供数据备份。什么是从他们的服务器获取响应到我自己的PHP脚本的最佳方法,然后让我玩。

任何帮助非常感谢

干杯

4 个答案:

答案 0 :(得分:5)

如果您只需要检索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
  3. 简单的事情:

    $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等,那么在PHP中使用REST客户端是更优雅的解决方案。可以在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));
    

答案 1 :(得分:0)

<强> 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;
?>

答案 2 :(得分:0)

Pecl的HTTPRequest类是一个非常好的客户端,我一直在将它用于几个项目。 http://pecl.php.net/package/pecl_http

另一个非常酷的客户端是Buzz客户端https://github.com/kriswallsmith/Buzz 如果您对此感兴趣,它也可以与Symfony2一起使用:)

答案 3 :(得分:0)

你可以使用其中任何一个,但我认为JSON是最简单,更轻松的,除非你使用SimpleXML。决定取决于数据的复杂程度。

鉴于API返回的JSON有效,您可以使用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);

?>