asp.net core使用httpclient
主要讲解常见的get请求和post请求
GET
var client = new HttpClient();
//3秒钟不响应就超时
client.Timeout=TimeSpan.FromSeconds(3);
using HttpResponseMessage response = await client.GetAsync("todos/3");
var jsonResponse = await response.Content.ReadAsStringAsync();
Console.WriteLine($"{jsonResponse}
");
POST
var client = new HttpClient();
var nowTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
client.DefaultRequestHeaders.Add("time",nowTimestamp);
//3秒钟不响应就超时
client.Timeout=TimeSpan.FromSeconds(3);
var param = new List<KeyValuePair<string, string>>();
param.Add(new KeyValuePair<string, string>("a", "xxxx"));
var response = await client.PostAsync(url, new FormUrlEncodedContent(param));
if (response.StatusCode == HttpStatusCode.OK)
{
var jsonStr = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<XXXObject>(jsonStr);
}
var errorMsg = await response.Content.ReadAsStringAsync();
post其他请求只需要改变content内容即可
asp.net core中使用
//注入
services.AddHttpClient();
//构造函数使用
private readonly IHttpClientFactory _httpClientFactory;
public ValuesController(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
参考
http://www.cnblogs.com/xiaoxiaotank/p/16273773.html
http://github.com/tmenier/Flurl
http://learn.microsoft.com/zh-cn/dotnet/fundamentals/networking/http/httpclient
http://www.cnblogs.com/willick/p/net-core-httpclient.html
还是flurl用习惯了效率高一些