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 的路由副本用于该令牌工作。

相关文章