[php] Guzzle을 사용하여 JSON으로 POST 요청을 보내려면 어떻게해야합니까?

누구든지 postJSON을 사용 하는 올바른 방법을 알고 Guzzle있습니까?

$request = $this->client->post(self::URL_REGISTER,array(
                'content-type' => 'application/json'
        ),array(json_encode($_POST)));

나는 얻을 internal server error서버에서 응답을. Chrome을 사용하여 작동합니다 Postman.



답변

들어 목구멍 5, 6, 7 이처럼 수행

use GuzzleHttp\Client;

$client = new Client();

$response = $client->post('url', [
    GuzzleHttp\RequestOptions::JSON => ['foo' => 'bar'] // or 'json' => [...]
]);

문서


답변

들면 폭식 <= 4 :

원시 게시물 요청이므로 JSON을 본문에 넣으면 문제가 해결되었습니다.

$request = $this->client->post($url,array(
                'content-type' => 'application/json'
        ),array());
$request->setBody($data); #set body!
$response = $request->send();

return $response;


답변

간단하고 기본적인 방법 (guzzle6) :

$client = new Client([
    'headers' => [ 'Content-Type' => 'application/json' ]
]);

$response = $client->post('http://api.com/CheckItOutNow',
    ['body' => json_encode(
        [
            'hello' => 'World'
        ]
    )]
);

응답 상태 코드와 본문 내용을 얻으려면 다음과 같이하십시오.

echo '<pre>' . var_export($response->getStatusCode(), true) . '</pre>';
echo '<pre>' . var_export($response->getBody()->getContents(), true) . '</pre>';


답변

이것은 나를 위해 일했다 (Guzzle 6 사용)

$client = new Client();
$result = $client->post('http://api.example.com', [
            'json' => [
                'value_1' => 'number1',
                'Value_group' =>
                             array("value_2" => "number2",
                                    "value_3" => "number3")
                    ]
                ]);

echo($result->getBody()->getContents());


답변

$client = new \GuzzleHttp\Client();

$body['grant_type'] = "client_credentials";
$body['client_id'] = $this->client_id;
$body['client_secret'] = $this->client_secret;

$res = $client->post($url, [ 'body' => json_encode($body) ]);

$code = $res->getStatusCode();
$result = $res->json();


답변

$client = new \GuzzleHttp\Client(['base_uri' => 'http://example.com/api']);

$response = $client->post('/save', [
    'json' => [
        'name' => 'John Doe'
    ]
]);

return $response->getBody();


답변

이것은 Guzzle 6.2에서 작동합니다.

$gClient =  new \GuzzleHttp\Client(['base_uri' => 'www.foo.bar']);
$res = $gClient->post('ws/endpoint',
                            array(
                                'headers'=>array('Content-Type'=>'application/json'),
                                'json'=>array('someData'=>'xxxxx','moreData'=>'zzzzzzz')
                                )
                    );

문서 guzzle에 따르면 json_encode를 수행하십시오.