我正在使用HttpClient
获取一个HttpResponseMessage
对象。取决于标题,我实际上并不关心响应主体,因此我不想读取主体内容,而只是丢弃它。
即使在内容字节被立即丢弃的情况下,我也看到了一些在线阅读响应正文的示例,我试图了解是否有必要。例如,我找到了执行此操作的GitHub gist,行124:
if (DownloadContentOnRedirect && response.Content != null)
{
await response.Content.ReadAsByteArrayAsync();
}
这是我正在做的事的一个例子:
using (var request = new HttpRequestMessage(HttpMethod.Get, uri))
{
var response = await (httpClient.SendAsync(request, CancellationToken.None));
// Some code here related to the work being done but not
// touching the response.
if (!CheckSomeHeaders(response))
{
// Response may have large body. Do not read, discard.
response.Dispose(); // Is this correct / enough?
}
else
{
// Do some other stuff. Response will be returned to
// caller and caller is responsible for handling it.
}
}
如果我已经知道自己不感兴趣,则希望避免阅读响应正文(正文可能很长)。 请注意,response
并非故意位于using
块内;在某些情况下,响应可能会返回给调用者。
上述要点是必要的步骤还是只是安全地调用Dispose()以避免资源泄漏。我无法想到需要阅读内容的情况,但也许我忽略了某些事情。
答案 0 :(得分:1)
以上要点是必要步骤
否。
仅调用
Dispose()
以避免资源泄漏是安全的。
是的。
但是在大多数情况下,没有必要。如果将其重构为包装在using