HttpClient 使用
Api支持
HttpClient 是基于Task的异步方法组,支持取消、超时异步特性,其可以分类为以下:
Restful: GetAsync,PostAsync,DeleteAsync,PutAsync
HttpHeaders属性:DefaultRequestHeaders
Timeout属性:Timeout,相比HttpRequest的参数,更加地智能,用TimeSpan替换了int。
Get扩展(本质上是封装了GetAsync()):GetStringAsync,GetStreamAsync,
GetByteArrayAsync
SendAsync:Restful的实现应该是封装了此方法。需要一个HttpRequestMessage作为参数。
HttpContent
使用post方式请求示例:
public static async Task<string> CreateUrlAsync(string url, Dictionary<string, string> parameters, string accessToken, int timeount = 10) { HttpClient httpClient = new HttpClient(new MyHttpClientHandlerProxy(accessToken)); httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken); httpClient.Timeout = TimeSpan.FromSeconds(timeount); FormUrlEncodedContent content = new FormUrlEncodedContent(parameters); var response = await httpClient.PostAsync(url, content); var str = await response.Content.ReadAsStringAsync(); return str; }
其他的Content类型:
StreamContent,StringContent,MutilpartContent,MultipartFormDataContent
HttpClientHandler
作为一个代理角色,可以支持自定义的处理方式。
public class MyHttpClientHandlerProxy : HttpClientHandler { private string accessToken; public MyHttpClientHandlerProxy(string accessToken) { this.accessToken = accessToken; } protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { //处理Headers request.Headers.Referrer = new Uri("www.imctf.com"); request.Headers.Add("Authorization", "Bearer " + accessToken); request.Headers.Add("UserAgent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727)"); //执行 var response = await base.SendAsync(request, cancellationToken); //处理编码 var contentType = response.Content.Headers.ContentType; if (string.IsNullOrEmpty(contentType.CharSet)) { contentType.CharSet = "GBK"; } return response; } }
使用:
相关推荐
84487600 2020-08-16
标题无所谓 2020-06-14
yanghui0 2020-06-09
清月 2011-08-14
似水流年梦 2020-08-09
knightwatch 2020-07-26
fengchao000 2020-06-16
sicceer 2020-06-12
yanghui0 2020-06-09
创建一个 HttpClient 实例,这个实例需要调用 Dispose 方法释放资源,这里使用了 using 语句。接着调用 GetAsync,给它传递要调用的方法的地址,向服务器发送 Get 请求。
wanghongsha 2020-06-04
jiaguoquan00 2020-05-26
zhaolisha 2020-05-16
wanghongsha 2020-05-05
wanghongsha 2020-04-14
knightwatch 2020-04-11
hygbuaa 2020-03-27