Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Zend Framework 3中的响应中获得有效的JSON输出?_Php_Json_Zend Framework3_Zend Http Client - Fatal编程技术网

Php 如何从Zend Framework 3中的响应中获得有效的JSON输出?

Php 如何从Zend Framework 3中的响应中获得有效的JSON输出?,php,json,zend-framework3,zend-http-client,Php,Json,Zend Framework3,Zend Http Client,我正在为API编写一个客户端 use Zend\Http\Client; use Zend\Http\Request; use Zend\Json\Json; ... $request = new Request(); $request->getHeaders()->addHeaders([ 'Accept-Charset' => 'UTF-8', 'Accept' => 'application/hal+json', 'Content-Type'

我正在为API编写一个客户端

use Zend\Http\Client;
use Zend\Http\Request;
use Zend\Json\Json;
...
$request = new Request();
$request->getHeaders()->addHeaders([
    'Accept-Charset' => 'UTF-8',
    'Accept' => 'application/hal+json',
    'Content-Type' => 'application/hal+json; charset=UTF-8',
]);
$apiAddress = 'http://my.project.tld/categories';
$request->setUri($apiAddress);
$request->setMethod('GET');
$client = new Client();
$response = $client->dispatch($request);
$data = $response->getContent();
。。。然后得到一个断开的JSON,如下所示:

1f9e <-- What is it?
{"_links...
\u043 <-- What is it?
1a6...
tfoli <-- What is it?
0

1f9e响应对象的
getContent()
方法的问题。它可能无法解码从请求中获取的内容。请看一看。这可能就是原因。我可能错了

因此,它的
getBody()
方法对请求的内容进行解码。因此,请使用此方法而不是
getContent()


希望这对你有帮助

响应对象的
getContent()
方法的问题。它可能无法解码从请求中获取的内容。请看一看。这可能就是原因。我可能错了

因此,它的
getBody()
方法对请求的内容进行解码。因此,请使用此方法而不是
getContent()


希望这对你有帮助

非常感谢您的回答!我没有使用
getBody()
,因为我信任IDE的自动完成功能。
Zend\Http\Client#dispatch(…)
返回
Zend\Stdlib\ResponseInterface
。我没有考虑它,当我只有<代码> GETEng内容(…)和<代码> GETMeta(…)<代码>时,我想,不再提供<代码> GESTORD(…)<代码>。但是可以肯定的是,
dispatch(…)
返回的具体对象是
Zend\Http\Response
,它提供了我需要的方法--
getBody()
。现在它开始工作了。谢谢!非常感谢您的回答!我没有使用
getBody()
,因为我信任IDE的自动完成功能。
Zend\Http\Client#dispatch(…)
返回
Zend\Stdlib\ResponseInterface
。我没有考虑它,当我只有<代码> GETEng内容(…)和<代码> GETMeta(…)<代码>时,我想,不再提供<代码> GESTORD(…)<代码>。但是可以肯定的是,
dispatch(…)
返回的具体对象是
Zend\Http\Response
,它提供了我需要的方法--
getBody()
。现在它开始工作了。谢谢!
$data = $response->getBody();