Wählen Sie CurlTransport, bevor Sie numerische CURLOPT-Optionen übergeben. Der HTTP-Client von Yii2 nutzt standardmäßig StreamTransport und wird nicht allein dadurch zu cURL, dass diese Konstanten vorhanden sind:

$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();

Verwenden Sie eine PHP-Laufzeit mit der cURL-Erweiterung. Dieses Beispiel erwartet einen HTTP-Proxy, der Basic akzeptiert; stimmen Sie den Proxy auf die Methode ab, die der Transport unterstützt.

CURLOPT_PROXYAUTH wählt die Authentifizierung gegenüber dem Vermittler. CURLOPT_HTTPAUTH und die API-Autorisierung dienen stattdessen dem Ziel.

Die gemeinsam genutzten Anfrageoptionen von Yii2, einschließlich groß-/kleinschreibungssensiblem Proxy und Timeouts, sind eine andere Schnittstelle. Sie machen beliebige cURL-Konstanten nicht zwischen Backends portierbar.

Wenn Client.requestConfig Standardwerte liefert, die erhalten bleiben müssen, nutzen Sie addOptions für Ergänzungen pro Anfrage. Das gezeigte setOptions ersetzt diese Sammlung und kann geerbte Einstellungen entfernen.

Ähnliche Artikel