Table of Contents

Class DefaultRestClientProvider

Namespace
Kook.Net.Rest
Assembly
Kook.Net.Rest.dll

表示一个默认的 RestClientProvider,用于创建 IRestClient 的默认实现的实例。

public static class DefaultRestClientProvider
Inheritance
DefaultRestClientProvider
Inherited Members

Fields

Instance

获取一个默认的 RestClientProvider 委托,用于创建 IRestClient 的默认实现的实例。

public static readonly RestClientProvider Instance

Field Value

RestClientProvider
See Also

Methods

Create(bool, IWebProxy?)

创建一个新的 RestClientProvider 委托。

public static RestClientProvider Create(bool useProxy = false, IWebProxy? webProxy = null)

Parameters

useProxy bool

是否使用系统代理。

webProxy IWebProxy

代理。

Returns

RestClientProvider

一个新的 RestClientProvider 委托。

Remarks

此方式创建的 IRestClient 实例将使用默认的 HTTP 客户端实现,并根据提供的参数配置代理设置。内部创建的 HttpClient 实例会启用 GZipDeflate,并设置请求头 AcceptEncodinggzip, deflate,以启用对压缩响应的支持。

Create(Func<HttpClient>)

创建一个新的 RestClientProvider 委托。

public static RestClientProvider Create(Func<HttpClient> httpClientFactory)

Parameters

httpClientFactory Func<HttpClient>

用于创建 HttpClient 实例的工厂方法。

Returns

RestClientProvider

一个新的 RestClientProvider 委托。

Examples

以下示例代码,在依赖注入环境中,展示了如何使用自定义的 HttpClient 工厂方法来创建一个 RestClientProvider
首先在依赖注入容器中注册一个命名的 HttpClient,并配置其默认请求头和消息处理程序:

HostApplicationBuilder builder = Host.CreateEmptyApplicationBuilder(new HostApplicationBuilderSettings());
builder.Services.AddHttpClient("KookRestHttpClient")
    .ConfigureHttpClient(x =>
    {
        x.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
        x.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
    })
    .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
    {
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
        UseCookies = false,
    });

然后在注册 KOOK 客户端的配置中,使用该命名的 HttpClient 来创建一个 RestClientProvider

builder.Services.AddSingleton<KookSocketConfig>(provider =>
{
    IHttpClientFactory httpClientFactory = provider.GetRequiredService<IHttpClientFactory>();
    return new KookSocketConfig
    {
        RestClientProvider = DefaultRestClientProvider.Create(() => httpClientFactory.CreateClient("KookRestHttpClient"))
    };
});

Remarks

在使用自定义的 HttpClient 工厂方法时,请确保返回的 HttpClient 实例具有适当的配置,例如正确的超时设置、代理设置等,以确保与 KOOK API 的通信正常进行。Kook.Net 不会为此方式创建的 HttpClient 实例进行任何管理或处理,因此需要开发者自行负责这些实例的生命周期和配置。

warning

此方式创建的 HttpClient 不应设置其 BaseAddress 属性。