首页 > Windows开发 > 详细

Web API: Client: HttpClient Message Handlers

时间:2014-03-27 05:20:16      阅读:550      评论:0      收藏:0      [点我收藏+]

 

 

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

 

bubuko.com,布布扣
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
bubuko.com,布布扣
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

Web API: Client: HttpClient Message Handlers,布布扣,bubuko.com

Web API: Client: HttpClient Message Handlers

原文:http://www.cnblogs.com/LeimOO/p/3627447.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!