繁体   English   中英

POST Request适用于Postman,但不适用于Guzzle

[英]POST Request works with Postman, but not with Guzzle

在我的Laravel应用程序中,我经常需要使用Guzzle将数据POST到API。

API用户使用承载令牌进行身份验证,并请求和接受原始json。 为了测试,我使用Postman访问了API,一切都运行得非常好。

邮差标题:

Accept:application/json
Authorization:Bearer [token]
Content-Type:application/json

和邮递员身体:

{
    "request1" : "123456789",
    "request2" : "2468",
    "request3" : "987654321",
    "name" : "John Doe"
}

邮递员返回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之间的区别。

您必须为headers使用headers配置部分,而不是根级别。

return new Client([
    'base_uri' => env('API_HOST'),
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer ' . $token,
        'Content-Type' => 'application/json',
    ],
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM