在我的 Laravel 应用程序中,我需要定期使用 Guzzle 将数据发布到 API。
API 使用不记名 token 进行身份验证,请求并接受原始 json。为了进行测试,我使用 Postman 访问了 API,一切都运行良好。
postman 标题:
Accept:application/json
Authorization:Bearer [token]
Content-Type:application/json
和 Postman 主体:
{
"request1" : "123456789",
"request2" : "2468",
"request3" : "987654321",
"name" : "John Doe"
}
Postman 返回一个 200 和一个 JSON 对象作为响应。
现在,当我对 Guzzle 进行同样的尝试时,我得到了 200 状态代码,但没有返回任何 JSON 对象。这是我的 Guzzle 实现:
public function getClient($token)
{
return new Client([
'base_uri' => env('API_HOST'),
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json'
]);
}
$post = $client->request('POST', '/path/to/api', [
'json' => [
'request1' => 123456789,
'request2' => 2468,
'request3' => 987654321,
'name' => 'John Doe',
]
]);
使用 Guzzle 发布 JSON 有什么技巧吗?如果没有,有没有办法调试幕后发生的事情?
我无法理解 Postman POST 和 Guzzle POST 之间的区别。
最佳答案
您必须为 header 使用 headers
配置部分,而不是根级别。
return new Client([
'base_uri' => env('API_HOST'),
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json',
],
]);
关于php - POST 请求适用于 Postman,但不适用于 Guzzle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42822951/