【发布时间】:2018-03-07 22:27:25
【问题描述】:
我正在使用
"guzzlehttp/guzzle": "^6.3"
我正在跑步
$client = new \GuzzleHttp\Client([
'base_uri' => 'http://myapp.loc',
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
]
]);
然后
$response = $client->post('/api/books', [
'json' => [
'bookId' => '123',
'title' => 'My Random Test Book',
'author' => 'Test Author'
]
]);
但我明白了
GuzzleHttp\Exception\ClientException :客户端错误:
POST http://myapp.loc/api/books导致404 Not Found响应: 为 foreach() 提供的参数无效
如果我在 Postman 中使用相同的路由和数据一切正常,那么路由和方法就可以了。
我也试过了
$response = $client->post('/api/books', [
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'body' => json_encode([
'bookId' => '123',
'title' => 'My Random Test Book',
'author' => 'Test Author'
])
]);
但它返回相同的 foreach 错误。
关于 Guzzle 为何显示此 foreach 错误的任何想法?
使用 Xdebug 对此进行深入研究,错误来自 \GuzzleHttp\Psr7\Stream 处的 fread 点
public function read($length)
{
...
$string = fread($this->stream, $length);
【问题讨论】: