Yii2 の CurlTransport でプロキシを設定する
Yii2 HTTP クライアントのリクエストに CURLOPT_PROXY とプロキシ認証オプションを渡す前に CurlTransport を選択します。
数値の CURLOPT オプションを渡す前に CurlTransport を選択します。Yii2 の HTTP クライアントは既定で StreamTransport を使うため、これらの定数があるだけでは cURL にはなりません。
$client = new \yii\httpclient\Client([
'transport' => \yii\httpclient\CurlTransport::class,
]);
$response = $client->createRequest()
->setMethod('GET')
->setUrl('https://api.example/items')
->setOptions([
CURLOPT_PROXY => 'http://proxy.example:8080',
CURLOPT_PROXYAUTH => CURLAUTH_BASIC,
CURLOPT_PROXYUSERNAME => $proxyUser,
CURLOPT_PROXYPASSWORD => $proxyPassword,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 15,
])
->send();cURL 拡張を備えた PHP 実行環境を使用します。この例は Basic を受け付ける HTTP プロキシを前提としています。プロキシは transport が対応する方式に合わせてください。
CURLOPT_PROXYAUTH は中継先の認証を選びます。CURLOPT_HTTPAUTH と API 認可は、代わりに宛先に対する認証です。
Yii2 の共有リクエストオプション(大文字小文字を区別するプロキシやタイムアウトを含む)は別のインターフェースです。任意の cURL 定数をバックエンド間で移植可能にはしません。
残す必要のある既定値が Client.requestConfig にある場合は、リクエストごとの追加に addOptions を使ってください。示した setOptions はそのコレクションを置き換えるため、継承した設定が失われることがあります。