原文地址: 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 = ;
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

最新文章

  1. mysql_fetch_array,mysql_fetch_row,mysql_fetch_assoc区别
  2. 《DSP using MATLAB》示例Example5.10
  3. 扁平化设计五大原则(转自CSDN翻译)
  4. 翻译《Writing Idiomatic Python》(二):函数、异常
  5. phpcms-v9视频模型的添加
  6. 暑假集训单切赛第一场 CF 191A Dynasty Puzzles
  7. jbpm4.4 demo3
  8. LaTeX 标题中使用 \bm 命令与 hyperref 的冲突
  9. Using HttpClient properly to avoid CLOSE_WAIT TCP connections
  10. sublime text3中的常用插件
  11. Get Start StrangeIOC for Unity3D
  12. UI 事件处理
  13. 如何在mac OS X中查看Emoji表情的含义
  14. Linux---基础命令(二)
  15. SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析
  16. 4.8cf自训
  17. 串行动画组QSequentialAnimationGroup
  18. 107. 二叉树的层次遍历 II
  19. Leetcode 949. 给定数字能组成的最大时间
  20. thymeleaf之下拉框回显选中

热门文章

  1. alphe4
  2. 51单片机RAM 数据存储区学习笔记
  3. TCP源码—epoll源码及测试
  4. 《构建之法》第8,9,10章读后感&amp;sprint1个人总结
  5. scala 有 + 运算符吗? - 03
  6. Java词频统计
  7. 栈java实现
  8. SourceTree轻松Git项目
  9. MQTT - Connect报文解析
  10. Linux下cp ~中关于“~”的疑问