2017-03-15 214 views
2

在我的Laravel应用程序中,我定期需要使用Guzzle将数据发布到API。POST请求适用于Postman,但不适用于Guzzle

这个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?如果没有,有没有办法在引擎盖下进行调试?

对于我的生活,我无法理解邮差POST和Guzzle POST之间的区别。

+0

Gu 6 6? ...您正在使用json_decode($ response-> getBody())将json从您的响应中取出? – Serge

回答

2

您必须使用headers配置节标题,而不是根级别。

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