using Newtonsoft.Json;
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;
namespace Ant.Common
{
public class SOACommon
{
///
/// 抽象接口调用方法
///
///
///
///
///
///
public async static Task GetDataAsync(string apiurl, string method, int timeout = 3000)
{
HttpClient client = new HttpClient
{
BaseAddress = new Uri(apiurl),
Timeout = TimeSpan.FromMilliseconds(timeout)
};
using (var response = await client.GetAsync(method))
{
if (response.IsSuccessStatusCode)
{
var reslut = await response.Content.ReadAsAsync();
return reslut;
}
else
{//进行轮询下一个服务器的URL进行调用
}
return null;
}
}
///
///
///
///
///
///
///
public async static Task GetDynamicAsync(string apiurl, string method, int timeout = 3000)
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(apiurl),
Timeout = TimeSpan.FromMilliseconds(timeout)
};
// 创建一个异步GET请求,当请求返回时继续处理
await httpClient.GetAsync(method).ContinueWith(
(requestTask) =>
{
HttpResponseMessage response = requestTask.Result;
// 确认响应成功,否则抛出异常
response.EnsureSuccessStatusCode();
// 异步读取响应为字符串
response.Content.ReadAsStringAsync().ContinueWith(
(readTask) =>
{
var relsut = readTask.Result;
return relsut;
});
});
return null;
}
///
/// POST请求通过请求JOSN字符串后返回也是JOSN字符串
///
///
///
///
///
///
public async static Task PostDataAsync(string apiurl, string method, string josnString, int timeout = 3000)
{
HttpContent httpContent = new StringContent(josnString);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpClient httpClient = new HttpClient
{
BaseAddress = new Uri(apiurl),
Timeout = TimeSpan.FromMilliseconds(timeout)
};
using (var response = await httpClient.PostAsync(method, httpContent))
{
if (response.IsSuccessStatusCode)
{
Task reslut = response.Content.ReadAsStringAsync();
return reslut.Result;
}
}
return string.Empty;
}
///
/// POST请求通过实体对象传递返回也是实体对象
///
///
///
///
///
///
///
public async static Task PostDataAsync(string apiurl, string method, Request t, int timeout = 3000)
{
var josnString = JsonConvert.SerializeObject(t);
HttpContent httpContent = new StringContent(josnString);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpClient httpClient = new HttpClient
{
BaseAddress = new Uri(apiurl),
Timeout = TimeSpan.FromMilliseconds(timeout)
};
using (var response = await httpClient.PostAsync(method, httpContent))
{
if (response.IsSuccessStatusCode)
{
Task reslut = response.Content.ReadAsStringAsync();
var modlist = JsonConvert.DeserializeObject(reslut.Result);
return modlist;
}
}
return null;
}
///
///
///
///
///
///
///
///
///
public async static Task PostDataAsync(string apiurl, string method, HttpContent content, int timeout = 3000)
{
HttpClient client = new HttpClient
{
BaseAddress = new Uri(apiurl),
Timeout = TimeSpan.FromMilliseconds(timeout)
};
using (var response = await client.PostAsync(method, content))
{
var reslut = await response.Content.ReadAsAsync();
return reslut;
}
}
}
}