一尘不染

从HTTPClient响应解压缩GZip流

c#

我正在尝试从WCF服务(从WCF服务到WCF服务)连接到返回GZip编码的JSON的api。我正在使用 HTTPClient
连接到API,并且已经能够以字符串形式返回JSON对象。但是,我需要能够将返回的数据存储在数据库中,因此,我认为最好的方法是将JSON对象返回并存储在数组或字节或类似内容中。

我具体遇到的是GZip编码的解压缩,并且尝试了很多不同的示例,但仍然无法获得它。

以下代码是我建立连接并获得响应的方式,这是从API返回字符串的代码。

public string getData(string foo)
{
    string url = "";
    HttpClient client = new HttpClient();
    HttpResponseMessage response;
    string responseJsonContent;
    try
    {
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        response = client.GetAsync(url + foo).Result;
        responseJsonContent = response.Content.ReadAsStringAsync().Result;
        return responseJsonContent;
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message);
        return "";
    }
}

我一直在跟踪几个不同的示例,例如这些StackExchange
API
MSDN以及关于stackoverflow
的几个示例,但是我一直无法获得这些示例中的任何一个。

实现这一目标的最佳方法是什么,我是否走在正确的轨道上?

谢谢你们。


阅读 1279

收藏
2020-05-19

共1个答案

一尘不染

像这样实例化HttpClient:

HttpClientHandler handler = new HttpClientHandler()
{
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};

using (var client = new HttpClient(handler))
{
    // your code
}
2020-05-19