Do celu modyfikacji procedury wykonania poszczególnego żądania służy yii\httpclient\Request::$options. Dostępne są poniższe opcje:
Dla przykładu:
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', // użyj proxy
'timeout' => 5, // ustaw timeout na 5 sekund, gdyby serwer nie odpowiadał
])
->send();
Tip: można ustawić domyślne opcje żądania za pomocą yii\httpclient\Client::$requestConfig. W takim wypadku, aby dodać kolejne opcje zachowując parametry domyślnych należy skorzystać z metody yii\httpclient\Request::addOptions().
Można również przekazać opcje odnoszące się do konkretnej metody przesyłania danych. Zwykle dotyczy to przypadku korzystania z yii\httpclient\CurlTransport, np. aby określić oddzielną wartość timeout dla połączenia i odbierania danych, dostarczaną w bibliotece PHP cURL. Można to zrobić w następujący sposób:
use yii\httpclient\Client;
$client = new Client([
'transport' => 'yii\httpclient\CurlTransport' // tylko cURL dostarcza wymaganą przez nas opcję
]);
$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, // timeout połączenia
CURLOPT_TIMEOUT => 10, // timeout pobierania danych
])
->send();
Informacje na temat możliwych opcji metod przesyłania danych można znaleść w ich dokumentacji.