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}\t{1}\t{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}\t{1};", p.ID, p.Title);
                    }
                }
                else
                {
                    Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                }
            }
        }

    }
}
Program.cs

 

转载于:https://www.cnblogs.com/LeimOO/p/3627447.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值