Google.Apis は、IWebProxy を持つ HTTP クライアントを作成するためのファクトリを提供します。生成されたサービスを構築するときに渡します。

var proxy = new System.Net.WebProxy("http://proxy.example:8080");
proxy.Credentials = new System.Net.NetworkCredential(
    proxyUser, proxyPassword);

using var youtube = new Google.Apis.YouTube.v3.YouTubeService(
    new Google.Apis.Services.BaseClientService.Initializer
    {
        ApplicationName = "ExampleVideoClient",
        ApiKey = apiKey,
        HttpClientFactory =
            Google.Apis.Http.HttpClientFactory.ForProxy(proxy)
    });

この例では、サポートされている公開データ操作に API キー アクセスを使用します。認証されていないプロキシの場合は、プロキシ資格情報の割り当てを省略します。この公開データ分岐では、パブリックな仲介者が許可されている場合、HTTP プロキシ一覧から HTTP エントリを選択します。プロキシのアカウントと API キーは異なるエンドポイントにサービスを提供します。

Google.Apis 1.73.0 では、BaseClientService.Initializer.HttpClientFactory がサポートされている作成フックです。ForProxy は、そのファクトリで作成されたクライアントに指定されたプロキシを設定します。要求の構築、シリアル化、および SDK パイプラインの残りはサービス側に残ります。

要求を発行する前にこれを構成します。構築済みのクライアントで MessageHandler.InnerHandler を置き換えることは、このユース ケースでは不要であり、他のハンドラーの選択を破棄する可能性があります。

OAuth 資格情報は、独自の HTTP 構成を通じてトークンを取得または更新できます。サービスのファクトリを設定しても、個別に作成された資格情報がトークンを取得する方法は決まりません。トークンの取得がプロキシ経由で失敗する操作である場合は、そのパスを別途確認してください。GoogleCredential を使用する場合は、そのトークン作業のために CreateWithHttpClientFactory からルーティングされたコピーを保持します。

関連記事