2017-03-15 184 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', 
    ], 
]); 
相關問題