2017-03-15 1 views
2

Laravel 애플리케이션에서 정기적으로 Guzzle을 사용하여 API에 POST 데이터를 POST해야합니다.POST 요청은 우편 배달부와 함께 작동하지만 구덩이와 함께 작동하지 않습니다.

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 객체는 반환되지 않습니다.

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', 
    ] 
]); 

목구멍와 JSON을 게시 몇 가지 트릭이있다 : 여기 내 목구멍 구현입니까? 그렇지 않다면 후드 아래에서 진행중인 작업을 디버깅 할 수있는 방법이 있습니까?

저의 인생에서 포스트 만 게시판과 구절 게시판의 차이점을 이해할 수는 없습니다.

+0

Guzzle 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', 
    ], 
]); 
관련 문제