等待HttpClientFactory
解决HttpClient
的所有问题的新HttpResponseMessage
,
我仍然无法找到应该处理HttpRequestMessage
和HttpResponseMessage
的答案。
下面是一个好习惯吗?
您是否使用带有//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);
}
答案 0 :(得分:1)
您是否使用带有HttpResponseMessage的Using语句?
简答:是的,你可以。
下面是一个好习惯吗?
取决于。
虽然通常建议练习将IDisposable
派生类与using
包装起来以便正确处理,但显示的示例可能会错误地使用它。
messageResponse
被注入包装类(MyWrapperResponse
),然后函数立即返回。如果在该包装器的构造函数之外使用响应消息,则可能已经处理了响应。