আপনি কীভাবে এটি করতে পারেন তার একটি উদাহরণ:
কিছু নোট:
LoggingHandlerঅনুরোধটি হ্যান্ডল করার আগে বাধা দেয় HttpClientHandlerযা শেষ পর্যন্ত তারে লিখিত হয়।
PostAsJsonAsyncঅভ্যন্তরীণভাবে এক্সটেনশানটি একটি তৈরি করে ObjectContentএবং যখন ReadAsStringAsync()ডাকে বলা হয় LoggingHandler, এটি অভ্যন্তরের ObjectContentবিন্যাসটিকে বস্তুটি সিরিয়ালায়িত করে তোলে এবং এজন্য আপনি জসনটিতে সামগ্রীটি দেখছেন।
লগিং হ্যান্ডলার:
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;
}
}
উপরের লগিংহ্যান্ডলারটি এইচটিপিপিপ্লায়েন্টের সাথে চেইন করুন :
HttpClient client = new HttpClient(new LoggingHandler(new HttpClientHandler()));
HttpResponseMessage response = client.PostAsJsonAsync(baseAddress + "/api/values", "Hello, World!").Result;
আউটপুট:
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!"