Class DefaultRestClientProvider
表示一个默认的 RestClientProvider,用于创建 IRestClient 的默认实现的实例。
public static class DefaultRestClientProvider
- Inheritance
-
DefaultRestClientProvider
- Inherited Members
Fields
Instance
获取一个默认的 RestClientProvider 委托,用于创建 IRestClient 的默认实现的实例。
public static readonly RestClientProvider Instance
Field Value
- See Also
Methods
Create(bool, IWebProxy?)
创建一个新的 RestClientProvider 委托。
public static RestClientProvider Create(bool useProxy = false, IWebProxy? webProxy = null)
Parameters
Returns
- RestClientProvider
一个新的 RestClientProvider 委托。
Remarks
此方式创建的 IRestClient 实例将使用默认的 HTTP 客户端实现,并根据提供的参数配置代理设置。内部创建的
HttpClient 实例会启用 GZip
及 Deflate,并设置请求头
AcceptEncoding 为
gzip, deflate,以启用对压缩响应的支持。
Create(Func<HttpClient>)
创建一个新的 RestClientProvider 委托。
public static RestClientProvider Create(Func<HttpClient> httpClientFactory)
Parameters
httpClientFactoryFunc<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 属性。