yii\httpclient\Client dostarcza kilku różnych metod do przesyłania wiadomości HTTP - transportów. Predefiniowane transporty to:
Można skonfigurować transport używany przez poszczególnego klienta za pomocą yii\httpclient\Client::$transport:
use yii\httpclient\Client;
$client = new Client([
'transport' => 'yii\httpclient\CurlTransport'
]);
Można stworzyć własny typ transportu, który będzie przesyłał dane w określony sposób. Aby tego dokonać, należy rozszerzyć
klasę yii\httpclient\Transport i zaimplementować w niej przynajmniej metodę send()
. Jedyne co trzeba zrobić, to
określić treść odpowiedzi HTTP i nagłówki, a następnie skomponować z nich obiekt odpowiedzi za pomocą
yii\httpclient\Client::createResponse():
use yii\httpclient\Transport;
class MyTransport extends Transport
{
/**
* @inheritdoc
*/
public function send($request)
{
$responseContent = '???';
$responseHeaders = ['???'];
return $request->client->createResponse($responseContent, $responseHeaders);
}
}
Można również przeciążyć metodę batchSend()
, jeśli dostępny jest sposób na wysłanie wielu żądań z większą wydajnością,
jak w przypadku wysyłania ich równolegle i asynchronicznie.