Un ejemplo de cómo podrías hacer esto:
Algunas notas:
LoggingHandlerintercepta la solicitud antes de que la maneje y HttpClientHandlerfinalmente escribe en el cable.
 
PostAsJsonAsyncLa extensión crea internamente un ObjectContenty cuando ReadAsStringAsync()se llama en el LoggingHandler, hace que el formateador interno ObjectContentserialice el objeto y esa es la razón por la que está viendo el contenido en json.
 
Controlador de registro:
public class LoggingHandler : DelegatingHandler
{
    public LoggingHandler(HttpMessageHandler innerHandler)
        : base(innerHandler)
    {
    }
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        Console.WriteLine("Request:");
        Console.WriteLine(request.ToString());
        if (request.Content != null)
        {
            Console.WriteLine(await request.Content.ReadAsStringAsync());
        }
        Console.WriteLine();
        HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
        Console.WriteLine("Response:");
        Console.WriteLine(response.ToString());
        if (response.Content != null)
        {
            Console.WriteLine(await response.Content.ReadAsStringAsync());
        }
        Console.WriteLine();
        return response;
    }
}
Encadena el LoggingHandler anterior con HttpClient :
HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));
HttpResponseMessage response = client.PostAsJsonAsync(baseAddress + "/api/values", "Hello, World!").Result;
Salida:
Request:
Method: POST, RequestUri: 'http://kirandesktop:9095/api/values', Version: 1.1, Content: System.Net.Http.ObjectContent`1[
[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Headers:
{
  Content-Type: application/json; charset=utf-8
}
"Hello, World!"
Response:
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Date: Fri, 20 Sep 2013 20:21:26 GMT
  Server: Microsoft-HTTPAPI/2.0
  Content-Length: 15
  Content-Type: application/json; charset=utf-8
}
"Hello, World!"
                 
                
                
                 
new HttpClientHandler()? No está presente en los documentos oficiales: docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/…ProcessRequestyProcessResponsemétodo para usted antes y después de laSendAsyncllamada.Ver http://mikehadlow.blogspot.com/2012/07/tracing-systemnet-to-debug-http-clients.html
Para configurar un oyente System.Net para que se genere tanto en la consola como en un archivo de registro, agregue lo siguiente a su archivo de configuración de ensamblaje:
fuente
<system.diagnostics>enapp.configdebajo,<configuration>pero en labincarpeta no hay un archivo de registro y la salida de la consola tampoco muestra nada, ¿qué me falta?initializeDataatributo se creará en el directorio de trabajo actual del ejecutable que está ejecutando, por lo que es posible que desee verificar qué ruta se encuentra en su entorno.El rastreo de red también está disponible para los siguientes objetos (consulte el artículo sobre msdn )
Coloque las siguientes líneas de código en el archivo de configuración
fuente
La solución más sencilla sería utilizar Wireshark y rastrear el flujo HTTP tcp.
fuente