如何仅在ZF2中获取cURL JSON数组

时间:2014-12-04 06:20:41

标签: php json curl zend-framework2

我使用ZF2和curl连接我的一个客户端API。

例如,我收到的回复为

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Type: application/json; charset=ISO-8859-1 Date: Thu, 04 Dec 2014 06:12:13 GMT Server: Google Frontend Cache-Control: private Alternate-Protocol: 80:quic,p=0.02,80:quic,p=0.02 Connection: close { "time": "06:12:13 AM", "milliseconds_since_epoch": 1417673533861, "date": "12-04-2014" } 

我只需要JSON数组。

我的代码是:

$data = "";
$adapter = new Curl();
$client = new Client();
$client->setAdapter($adapter);
$client->setUri('http://date.jsontest.com');
$client->setMethod('POST');
$adapter->setCurlOption(CURLOPT_POST, 1);
$adapter->setCurlOption(CURLOPT_POSTFIELDS, $data);
$adapter->setCurlOption(CURLOPT_SSL_VERIFYPEER, 0);
$adapter->setCurlOption(CURLOPT_HTTPHEADER, array(
    'Content-type: application/json',
    'Authorization: Bearer $token'
));
$response = $client->send();
return new ViewModel(array(
'response' => $response,
 ));

1 个答案:

答案 0 :(得分:0)

成功完成请求后,Zend HTTP客户端send()方法会返回新的响应实例。您直接将该响应实例传递给您的视图,而不是响应中的内容(正文)。

试试这个:

// Your current code..

$response  = $client->send();
$viewModel = new ViewModel();

if($response->getStatusCode() === 200) {
    $obj = json_decode($response->getBody(), true);

    if($obj === null) {
     // Json cannot be decoded.. handle it..
    }

    $viewModel->setVariable('response', $obj);

} else {
    // Status code is not 200, handle it..
}

// And return the model
return $viewModel;

不完美,但应该有效..