gpt4 book ai didi

c# - 如何在 Simple OData Client 中启用 gzip 压缩?

转载 作者:太空狗 更新时间:2023-10-29 21:38:22 26 4
gpt4 key购买 nike

我正在尝试执行一个查询,以使用像这样的简单 OData 客户端库 (C#) 从 CRM Dynamics 检索信息:

var settings = new ODataClientSettings(resource + "/api/data/v8.0/");
settings.BeforeRequest = (request) =>
{
request.Headers.Clear();
request.Headers.Add("Authorization", accesstoken.AccessTokenType + " " + accesstoken.AccessToken);
};

settings.PayloadFormat = ODataPayloadFormat.Json;
var client = new ODataClient(settings);
var annotations = new ODataFeedAnnotations();

var transactions = await client.For("mss_transaccions").FindEntriesAsync(annotations);
while (annotations.NextPageLink != null)
{
transactions = transactions.Union(await client.For("mss_transaccions").FindEntriesAsync(annotations.NextPageLink, annotations));
}

虽然这有效,但速度非常慢,因为我对 mss_transaccions 表的查询有 7200 个实体。我正在查看 Fiddler 中的输出,我可以看到它正在尝试下载大约 20 MB 的信息。

我尝试在 Google Chrome 上运行相同的查询,我可以看到默认情况下,获得的响应以 gzip 格式压缩,从 20MB 到仅仅 500KB。所以我推断 Simple OData Client 没有进行任何类型的压缩,这就是它如此缓慢的原因。

此外,来自 OData Simple Client 的请求要求元数据信息,这又增加了 4MB,而 Chrome 或简单的 HttpClient 请求不需要进行该调用。

我能做些什么来改进它并启用压缩吗?

谢谢。

最佳答案

在您的 BeforeRequest 操作中,添加 Accept-Encoding header ,如下所示:

settings.BeforeRequest = (request) =>
{
// ... other headers as above
request.Headers.Add("Accept-Encoding", "gzip");
};

关于c# - 如何在 Simple OData Client 中启用 gzip 压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36840757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com