php - POST 请求适用于 Postman,但不适用于 Guzzle

标签 php json laravel postman guzzle

在我的 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/

相关文章:

php - Laravel excel 验证两列的组合是否重复

javascript - 使用 Gulp 缩小 PHP 文件中的内联 Javascript

javascript - 完成后如何在动态PHP网站上高效实现AJAX

php - 任何人都知道为什么我总是得到重复的图像

php - 在 Laravel 中删除数据透视表中的行

php - 使用发票描述更新和发票 strip 订阅数量 laravel 收银员

php - 如何为网页制作Python解释器

c# - JSON 数据在反序列化期间未与 Dictionary 属性绑定(bind)

具有 native JSON 支持的 MySQL 5.7 - 如何选择数组中存在特定值的行?

javascript - 你如何运行只有一个 CSS 类的 javascript?