HttpResponseMessage你处理它吗?

时间:2018-05-30 08:02:51

标签: c# asp.net-web-api2 dotnet-httpclient asp.net-core-webapi

等待HttpClientFactory解决HttpClient的所有问题的新HttpResponseMessage

我仍然无法找到应该处理HttpRequestMessageHttpResponseMessage的答案。

下面是一个好习惯吗?

您是否使用带有//httpClient has been injected using (HttpResponseMessage messageResponse = await httpClient.GetAsync(uri, cancellationToken).ConfigureAwait(false)) { using (HttpContent content = messageResponse.Content) { if (messageResponse.IsSuccessStatusCode) { var json = await content.ReadAsStringAsync(); var response = await Task.Run(() => JsonConvert.DeserializeObject<TResponse>(json, serializerSettings)); return new MyWrapperResponse<TResponse>(messageResponse,response); } } } 的使用语句?

    static void Main(string[] args)
    {
        List<ProductDM> productDMList = new List<ProductDM>()
        {
            new ProductDM()
            {
                ProductID = 1,
                CabinetList = new List<InventoryDM>()
                {
                    new InventoryDM()
                    {
                        Min = 1,
                        Max = 12
                    }
                }
            },
            new ProductDM()
            {
                ProductID = 1,
                CabinetList = new List<InventoryDM>()
                {
                    new InventoryDM()
                    {
                        Min = 16,
                        Max = 100
                    }
                }
            },
        };

        Dictionary<int, ProductDM> dict = new Dictionary<int, ProductDM>();

        foreach(ProductDM product in productDMList)
        {
            if(!dict.ContainsKey(product.ProductID))
            {
                dict.Add(product.ProductID, product);
            }
            else
            {
                dict[product.ProductID].CabinetList.AddRange(product.CabinetList.ToArray());
            }
        }

        Console.ReadKey(true);

    }

1 个答案:

答案 0 :(得分:1)

  

您是否使用带有HttpResponseMessage的Using语句?

简答:是的,你可以。

  

下面是一个好习惯吗?

取决于。

虽然通常建议练习将IDisposable派生类与using包装起来以便正确处理,但显示的示例可能会错误地使用它。

messageResponse被注入包装类(MyWrapperResponse),然后函数立即返回。如果在该包装器的构造函数之外使用响应消息,则可能已经处理了响应。