使用 GuzzleHttp Psr7 Response 要取得 Response 的回傳內容方法有兩種
1 2 3 4 5
| (string) $response->getBody();
$response->getBody()->getContents();
|
取得的內容會一模一樣,但是同一個 method 執行兩次是有差異的
1 2 3 4 5 6 7
| (string) $response->getBody(); (string) $response->getBody();
$response->getBody()->getContents(); $response->getBody()->getContents();
|
後來去查了一下原始碼發現,原來 __toString 會執行 seek(0),自動將指標歸零,才能一直重覆執行啊
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Stream implements StreamInterface { public function __toString() { try { $this->seek(0); return (string) stream_get_contents($this->stream); } catch (\Exception $e) { return ''; } } }
|