-1

我正在尽我所能解释这一点,请问我对某些事情不清楚。我正在使用一个 API,我可以在其中获取大量有关传感器的信息。

这是一个类中的方法

public function getSensors()
 {
     $params = array();
     return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/sensors/list', $params, 'GET')->getBody());

在我的index.php中

$params = array('id'=> XXXXXX); 
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params,'GET');

echo json_decode($response->getBody());

这给了我一大堆这样的信息:

{"id":"xxxxx","client":"xxxx","name":"xxxxx","lastUpdated": xxxx}

我只想使用其中的一些信息。

这是 getBody() 方法-

public function getBody() {
    if (self::METHOD_POST == $this->method && (!empty($this->postParams) || !empty($this->uploads))) {

        if (0 === strpos($this->headers['content-type'], 'application/x-www-form-urlencoded')) {

            $body = http_build_query($this->postParams, '', '&');

            if (!$this->getConfig('use_brackets')) {

                $body = preg_replace('/%5B\d+%5D=/', '=', $body);

            }

            // support RFC 3986 by not encoding '~' symbol (request #15368)

            return str_replace('%7E', '~', $body);



        } elseif (0 === strpos($this->headers['content-type'], 'multipart/form-data')) {

            require_once 'HTTP/Request2/MultipartBody.php';

            return new HTTP_Request2_MultipartBody(

                $this->postParams, $this->uploads, $this->getConfig('use_brackets')

            );

        }

    }

    return $this->body;

}
4

1 回答 1

0

如果您使用的是 API,则您无法控制获取的信息,除非 API 定义了这样做的方法。如果您正在读取传感器,那么这不太可能是一种选择。

不过,您可以忽略不需要的内容。

例如:

$myArray = json_decode('{"id":"xxxxx","client":"xxxx","name":"xxxxx","lastUpdated": xxxx}');
$mySubset = array($myArray['id'], $myArray['lastUpdated']);

我只是json_decode用来说明这一点。从您的评论看来,它getBody()正在返回一个数组,但您报告的错误消息指向一个对象。

对于数组,您可以使用

$myResp = $response->getBody();
$myId = $myResp['id'];

对于您可以使用的对象

$myResp = $response->getBody();
$myId = $myResp->id;

抱歉,如果我没有完全达到目标 - 我在这里开枪有点盲目!

于 2013-08-05T21:38:57.390 回答