web-dev-qa-db-ja.com

ガズルコンテンツタイプを設定できません

私はこの方法でリクエストしようとしています:

$body = [];
$body['holder_name'] = $full_name;
$body['bank_code'] = $bank_number;
$body['routing_number'] = $branch_number;
$body['account_number'] = $account_number;
$body['type'] = 'checking';

$client = new GuzzleHttp\Client([
'base_url' => [$url, []],
'headers'  => ['content-type' => 'application/json', 'Accept' => 'application/json'],
    'defaults' => [
         'auth' => [$publishable_key, ''],
],
    'body' => json_encode($body),
]);

問題は、このリクエストがContent-Typeなしで設定されていることです。私は何が間違っているのですか?

8
Bug

わかりました..問題は、本体とヘッダーをデフォルトの外に設定していたことでした。解決策は次のとおりです。

$client = new GuzzleHttp\Client([
'base_url' => [$url, []],
'defaults' => [
     'auth' => [$publishable_key, ''],
     'headers'  => ['content-type' => 'application/json', 'Accept' => 'application/json'],
     'body' => json_encode($body),
],
]);
13
Bug

ガズル6

Content-Typeヘッダーがまだ存在しない場合、GuzzleはContent-Typeヘッダーをapplication/x-www-form-urlencodedに設定します。

2つのオプションがあります。

Option 1: On the Client directly

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

Option 2: On a Per Request basis

// Set various headers on a request
$client = new GuzzleHttp\Client();

$client->request('GET', '/whatever', [
    'headers' => [
        'Content-Type' => 'application/json'
    ]
]);

参照できます ガズル6:リクエストオプション

7
Mick