Laravel + GuzzleHTTP 没有响应数据?

Sca*_*olf 2 post json laravel guzzle

我正在使用 guzzle 查询我的 API。

\n\n
$client = new Client();\n        $response = $client->post(\'xxxxxx\',\n            array(\n                \'headers\' => array(\'Content-Type\'=>\'application/json\'),\n                \'json\'=> array(\n                    "type" => 0,\n                    [...]\n                )\n            )\n        );\n\n        //$response = json_decode($response);\n\n        dd($response->getBody());\n
Run Code Online (Sandbox Code Playgroud)\n\n

这应该输出类似这样的内容:

\n\n
{\n  "returnCode": 0,\n  "success": true\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我却得到了别的东西。

\n\n
Stream {#230 \xe2\x96\xbc\n  -stream: stream resource @12 \xe2\x96\xbc\n    wrapper_type: "PHP"\n    stream_type: "TEMP"\n    mode: "w+b"\n    unread_bytes: 0\n    seekable: true\n    uri: "php://temp"\n    options: []\n  }\n  -size: null\n  -seekable: true\n  -readable: true\n  -writable: true\n  -uri: "php://temp"\n  -customMetadata: []\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

谁能帮助我或告诉我我做错了什么?我想发送原始发布数据,然后获取原始发布数据,然后我想保存(例如在数据库中)。

\n

Loe*_*oek 5

getBody()
Run Code Online (Sandbox Code Playgroud)

返回一个流接口。您想要获取该流的内容,因此:

$response->getBody()->getContents();
Run Code Online (Sandbox Code Playgroud)

就是你正在寻找的

笔记

根据文档,您还可以将流接口转换为字符串,但我得到了不同的结果。getContents()总是做它需要做的事情,所以这就是我的解决方案。