使用HttpClient如何查看请求内容主体?

Jus*_*son 8 .net c# http

我想查看 HTTP 请求的请求正文包含哪些内容以进行调试。这是我现在所拥有的:

var httpResponseMessage = await _httpClient.PostAsync(uri, objectToInsert, jsonFormatter);

//This throws an exception
var thisDoesntWork = await httpResponseMessage.RequestMessage.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)

这会抛出一个ObjectDisposedException. 如何查看请求正文以确保发送的 JSON 正确?

vil*_*der 5

简短的回答是,在请求发送后您不能再这样做。HttpClient 在发出请求后处理内容主体,以方便开发人员。请参阅为什么 HttpClient.PostAsync 和 PutAsync 处理内容?一些细节。

作为替代方案,您可以从现有的 HttpContent 实现继承,重写 Dispose 方法,并在处置之前记录内容正文。

或者,按照建议,使用外部工具来监控运行中的请求。