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