• Web API: Client: HttpClient Message Handlers


    原文地址: http://www.asp.net/web-api/overview/web-api-clients/httpclient-message-handlers

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Test.WebAPI.Client
    {
        public class CustomClientMessageHandler : DelegatingHandler 
        {
            private int count = 0;
            protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
            {
                count++;
                Console.WriteLine(count);
    
                var response = await base.SendAsync(request, cancellationToken);
    
                if (!response.IsSuccessStatusCode)
                {
                    Console.WriteLine("{0}	{1}	{2}", request.RequestUri, (int)response.StatusCode, response.Headers.Date);
                }
    
                return response;
            }
        }
    }
    CustomClientMessageHandler.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    using Test.EntityFramework.Models;
    
    namespace Test.WebAPI.Client
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                // Custom client message handler
                TestCustomHanlder().Wait();
    
    
                Console.WriteLine("Exist...");
    
                Console.ReadLine();
            }
    
            public static async Task TestCustomHanlder()
            {
                using (HttpClient client = HttpClientFactory.Create(new CustomClientMessageHandler()))
                {
                    client.BaseAddress = new Uri("http://localhost:55165/");
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
    
                    HttpResponseMessage response = await client.GetAsync("api/test");  // Blocking call
    
                    // Get
                    if (response.IsSuccessStatusCode)
                    {
                        // Parse the response body. Blocking!
                        var products = await response.Content.ReadAsAsync<IEnumerable<Test.EntityFramework.Models.Test>>();
                        foreach (var p in products)
                        {
                            Console.WriteLine("{0}	{1};", p.ID, p.Title);
                        }
                    }
                    else
                    {
                        Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                    }
                }
            }
    
        }
    }
    Program.cs
  • 相关阅读:
    感觉跟奇怪
    人多
    淡忘
    可疑
    js判断对象是否为空对象的几种方法
    互联网隐私泄漏
    清明时节
    垃圾mac
    【ES6】---JavaScript(二)
    【微信小程序】---Socket聊天功能实现
  • 原文地址:https://www.cnblogs.com/LeimOO/p/3627447.html
Copyright © 2020-2023  润新知