tumblr json meta与php

时间:2014-01-20 23:50:18

标签: php json tumblr

我正在使用Tumblr api v2和php,它的工作正常但是这段代码:

<?php
require 'vendor/autoload.php';
// Authenticate via OAuth
$client = new Tumblr\API\Client(
  'my',
  'key',
  'is',
  'good'
);
// Make the request
$post=$client->getUserInfo();
echo(json_encode($post));
?>

就像这样(https://api.tumblr.com/console

{
   "meta": {
      "status": 200,
      "msg": "OK"
   },
   "response": { ... }
}

我的响应部分只有没有meta:

{"user":{"name":"my name","likes":0,… }}

我怎样才能获得元数据?我尝试$ post-&gt; meta和$ client-&gt; meta,但这是愚蠢的测试...

2 个答案:

答案 0 :(得分:1)

根据this行,您不必担心元数据。 php客户端负责任何响应代码&gt; 400并抛出Tumblr\API\RequestException。所以你真正想做的是:

<?php
require 'vendor/autoload.php';
try {
  // Authenticate via OAuth
  $client = new Tumblr\API\Client(
    'my',
    'key',
    'is',
    'good'
  );
  $post=$client->getUserInfo();
  echo(json_encode($post));
} catch(Tumblr\API\RequestException $e) {
  //handle na exception here
}
?>

答案 1 :(得分:0)

键是Client.php

的第383和421行
private function getRequest($path, $options, $addApiKey)
{
    $response = $this->makeRequest('GET', $path, $options, $addApiKey);

    return $this->parseResponse($response);
} 

private function parseResponse($response)
{
    $response->json = json_decode($response->body);
    if ($response->status < 400) {
        return $response->json->response;
    } else {
        throw new RequestException($response);
    }
}

在你获得它之前,你所做的每一个电话都会得到解析。除非出现错误,否则您将只获得响应,而不是meta,在这种情况下,您将获得异常。

所以,在说“这是愚蠢的”之前阅读代码。