全部產品
Search
文件中心

Alibaba Cloud SDK:代理配置

更新時間:Aug 27, 2024

本文為您詳細介紹V1.0 SDK如何進行網路代理程式配置。

說明

代理配置方式優先順序:Request設定 > Client設定 > 環境變數,優先順序依次降低。

  • 通過Request設定代理。

    <?php
    
    require_once 'vendor/autoload.php';
    
    use AlibabaCloud\Client\AlibabaCloud;
    use AlibabaCloud\Client\Exception\ClientException;
    use AlibabaCloud\Client\Exception\ServerException;
    use AlibabaCloud\Ecs\Ecs;
    
    try {
        // 請確保已設定環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'));
        $request = Ecs::v20140526()->describeRegions();
        $result = $request
            ->version('2014-05-26')
            ->product('Ecs')
            ->action('DescribeRegions')
            ->regionId('cn-hangzhou')
            ->host("ecs.cn-hangzhou.aliyuncs.com")
            ->scheme("http") // 當proxy設定為https時,請設定scheme為https;當proxy設定為http和no時,請設定scheme為http。否則代理不生效
            ->options([
                'proxy' => [
                    'http'  => 'http://localhost:8080', // Use this proxy with "http"
    //                'https' => 'http://localhost:9124', // Use this proxy with "https",
    //                'no' => ['example.com']    // Don't use a proxy with these
                ]
            ])
            ->request();
        print_r($result->toArray());
    } catch (ClientException $exception) {
        // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        echo $exception->getMessage() . PHP_EOL;
    } catch (ServerException $exception) {
        // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        echo $exception->getMessage() . PHP_EOL;
        echo $exception->getErrorCode() . PHP_EOL;
        echo $exception->getRequestId() . PHP_EOL;
        echo $exception->getErrorMessage() . PHP_EOL;
    }
  • 通過Client設定代理。

    <?php
    
    require_once 'vendor/autoload.php';
    
    use AlibabaCloud\Client\AlibabaCloud;
    use AlibabaCloud\Client\Exception\ClientException;
    use AlibabaCloud\Client\Exception\ServerException;
    use AlibabaCloud\Ecs\Ecs;
    
    try {
        // 請確保已設定環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        AlibabaCloud::accessKeyClient(getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'))
            ->asDefaultClient()
            ->options([
                'proxy' => [
                    'http'  => 'http://localhost:8080', // Use this proxy with "http"
    //                'https' => 'http://localhost:9124', // Use this proxy with "https",
    //                'no' => ['localhost']    // Don't use a proxy with these
                ]
            ]);
        $request = Ecs::v20140526()->describeRegions();
        $result = $request
            ->version('2014-05-26')
            ->product('Ecs')
            ->action('DescribeRegions')
            ->regionId('cn-hangzhou')
            ->host("ecs.cn-hangzhou.aliyuncs.com")
            ->scheme("http") // 當proxy設定為https時,請設定scheme為https;當proxy設定為http和no時,請設定scheme為http。否則代理不生效
            ->request();
        print_r($result->toArray());
    } catch (ClientException $exception) {
        // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        echo $exception->getMessage() . PHP_EOL;
    } catch (ServerException $exception) {
        // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        echo $exception->getMessage() . PHP_EOL;
        echo $exception->getErrorCode() . PHP_EOL;
        echo $exception->getRequestId() . PHP_EOL;
        echo $exception->getErrorMessage() . PHP_EOL;
    }
  • 通過環境變數設定代理。

    • HTTP_PROXY或者http_proxy

    • HTTPS_PROXY或者https_proxy

    • NO_PROXY或者no_proxy