Contoh bagaimana Anda bisa melakukan ini:
Beberapa catatan:
LoggingHandler
memotong permintaan sebelum menanganinya HttpClientHandler
yang akhirnya menulis ke kabel.
PostAsJsonAsync
extension secara internal membuat ObjectContent
dan ketika ReadAsStringAsync()
dipanggil di LoggingHandler
, itu menyebabkan pemformat di dalam ObjectContent
membuat serial objek dan itulah alasan Anda melihat konten di json.
Penangan logging:
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;
}
}
Rangkai LoggingHandler di atas dengan HttpClient :
HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));
HttpResponseMessage response = client.PostAsJsonAsync(baseAddress + "/api/values", "Hello, World!").Result;
Keluaran:
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()
? Itu tidak ada di dokumen resmi: docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/…ProcessRequest
danProcessResponse
untuk Anda sebelum dan sesudahSendAsync
panggilan.Lihat http://mikehadlow.blogspot.com/2012/07/tracing-systemnet-to-debug-http-clients.html
Untuk mengonfigurasi pendengar System.Net ke output ke konsol dan file log, tambahkan baris berikut ke file konfigurasi assembly Anda:
sumber
<system.diagnostics>
keapp.config
bawah<configuration>
tetapi dibin
folder tidak ada file log dan output konsol tidak menampilkan apa-apa juga, apa yang saya lewatkan?initializeData
atribut akan dibuat di direktori kerja saat ini dari executable yang Anda jalankan, jadi Anda mungkin ingin memeriksa jalur mana yang ada di lingkungan Anda.Pelacakan jaringan juga tersedia untuk objek berikutnya (lihat artikel tentang msdn )
Letakkan baris kode berikutnya ke file konfigurasi
sumber
Solusi termudah adalah dengan menggunakan Wireshark dan melacak aliran tcp HTTP.
sumber