yii\httpclient\Request::$options を使って、特定のリクエストの実行を調整することが出来ます。 以下のオプションがサポートされています。
例えば、
use yii\httpclient\Client;
$client = new Client();
$response = $client->createRequest()
->setMethod('post')
->setUrl('http://domain.com/api/1.0/users')
->setData(['name' => 'John Doe', 'email' => 'johndoe@domain.com'])
->setOptions([
'proxy' => 'tcp://proxy.example.com:5100', // プロキシを使用
'timeout' => 5, // サーバが応答しない場合のために 5 秒のタイムアウトを設定
])
->send();
Tip: デフォルトのリクエスト・オプションを yii\httpclient\Client::$requestConfig によって設定することが出来ます。 その場合、特別なリクエスト・オプションを追加したいときは、設定済みのオプションを保持するために yii\httpclient\Request::addOptions() を使ってください。
特定のリクエストのトランスポートに対してのみ適用するオプションを渡すことも出来ます。yii\httpclient\CurlTransport を使う場合は、通常、そのようにします。 例えば、接続とデータ受信について、PHP cURL ライブラリによってサポートされているように、個別のタイムアウトを指定したいでしょう。 次のようにして、そうすることが出来ます。
use yii\httpclient\Client;
$client = new Client([
'transport' => 'yii\httpclient\CurlTransport' // ここで使うオプションは cURL だけがサポートしている
]);
$response = $client->createRequest()
->setMethod('post')
->setUrl('http://domain.com/api/1.0/users')
->setData(['name' => 'John Doe', 'email' => 'johndoe@domain.com'])
->setOptions([
CURLOPT_CONNECTTIMEOUT => 5, // 接続タイムアウト
CURLOPT_TIMEOUT => 10, // データ受信タイムアウト
])
->send();
固有のオプションのサポートについては、個別のトランスポート・クラスのドキュメントを参照してください。