1

我正在为 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
  • 第二行:第一个内容部分
  • 3d 线:字符串1a6
  • 第四行:第二个内容部分
  • 第 5 行:0

为什么我会收到额外的符号/字符串?如何避免这种获取有效的 JSON 输出?

4

1 回答 1

4

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

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

$data = $response->getBody();

希望这会对你有所帮助!

于 2017-07-07T20:50:07.343 回答