숫자 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는 그 컬렉션을 대체하므로 상속된 선택이 사라질 수 있습니다.

관련 글