|
|
@ -8,12 +8,13 @@ using System.Net; |
|
|
|
using System.Reflection; |
|
|
|
using System.Text; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using System.Net.Http.Headers; |
|
|
|
|
|
|
|
namespace ICSSoft.FromERP |
|
|
|
{ |
|
|
|
public class HttpHelper |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// POST请求
|
|
|
|
/// </summary>
|
|
|
@ -21,7 +22,7 @@ namespace ICSSoft.FromERP |
|
|
|
/// <param name="requestJson">请求json</param>
|
|
|
|
/// <param name="token">token</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
public static async Task<T> HttpClientPost<T>(string url, string requestJson, string contentType = "application/json", string token = "") where T : new() |
|
|
|
public static async Task<T> HttpClientPost<T>(string url, string requestJson, Dictionary<string, string> dic=null , string contentType = "application/json", string token = "") where T : new() |
|
|
|
{ |
|
|
|
|
|
|
|
string result = string.Empty; |
|
|
@ -29,20 +30,87 @@ namespace ICSSoft.FromERP |
|
|
|
using (HttpContent httpContent = new StringContent(requestJson, System.Text.Encoding.UTF8, contentType)) |
|
|
|
{ |
|
|
|
//使用注入的httpclientfactory获取client
|
|
|
|
using (var httpClient = new HttpClient()) |
|
|
|
using (var httpClient = new HttpClient( )) |
|
|
|
{ |
|
|
|
|
|
|
|
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) |
|
|
|
{ |
|
|
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; |
|
|
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; |
|
|
|
// httpClient.BaseAddress. = HttpVersion.Version10;
|
|
|
|
// httpClient.DefaultRequestVersion = HttpVersion.Version30,
|
|
|
|
} |
|
|
|
|
|
|
|
//设置请求头
|
|
|
|
//设置超时时间
|
|
|
|
if (!string.IsNullOrEmpty(token)) |
|
|
|
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); |
|
|
|
if (dic != null) |
|
|
|
{ |
|
|
|
foreach (var item in dic) |
|
|
|
{ |
|
|
|
httpClient.DefaultRequestHeaders.Add(item.Key, item.Value); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
httpClient.Timeout = new TimeSpan(0, 0, 60); |
|
|
|
HttpResponseMessage res = httpClient.PostAsync(url, httpContent).Result; |
|
|
|
res.EnsureSuccessStatusCode(); |
|
|
|
result = res.Content.ReadAsStringAsync().Result; |
|
|
|
result = res.Content.ReadAsStringAsync().Result; |
|
|
|
return JsonConvert.DeserializeObject<T>(result); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static async Task<T> HttpClientPost2<T>(string url, string requestJson, Dictionary<string, string> dic, string contentType = "application/json") where T : new() |
|
|
|
{ |
|
|
|
|
|
|
|
string result = string.Empty; |
|
|
|
Uri postUrl = new Uri(url); |
|
|
|
|
|
|
|
//使用注入的httpclientfactory获取client
|
|
|
|
using (var httpClient = new HttpClient()) |
|
|
|
{ |
|
|
|
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType)); |
|
|
|
|
|
|
|
using (StringContent strcontent = new StringContent(requestJson, Encoding.UTF8, contentType)) |
|
|
|
{ |
|
|
|
var message = new HttpRequestMessage(HttpMethod.Post, url); |
|
|
|
//设置cookie信息
|
|
|
|
foreach (var item in dic) |
|
|
|
{ |
|
|
|
message.Headers.Add(item.Key, item.Value); |
|
|
|
} |
|
|
|
|
|
|
|
//设置contetn
|
|
|
|
message.Content = strcontent; |
|
|
|
//发送请求
|
|
|
|
var res = httpClient.SendAsync(message).Result; |
|
|
|
res.EnsureSuccessStatusCode(); |
|
|
|
result = await res.Content.ReadAsStringAsync(); |
|
|
|
return JsonConvert.DeserializeObject<T>(result); |
|
|
|
} |
|
|
|
|
|
|
|
////设置请求头
|
|
|
|
////设置超时时间
|
|
|
|
//if (dic != null && dic.Count > 0)
|
|
|
|
//{
|
|
|
|
// foreach (var item in dic)
|
|
|
|
// {
|
|
|
|
// httpClient.DefaultRequestHeaders.Add(item.Key, item.Value);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
////if (!string.IsNullOrEmpty(token))
|
|
|
|
//// httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
|
|
|
|
//httpClient.Timeout = new TimeSpan(0, 0, 60);
|
|
|
|
//HttpResponseMessage res = httpClient.PostAsync(url, httpContent).Result;
|
|
|
|
//res.EnsureSuccessStatusCode();
|
|
|
|
//result = await res.Content.ReadAsStringAsync();
|
|
|
|
//return JsonConvert.DeserializeObject<T>(result);
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static async Task<T> HttpClientGet<T>(string url, string contentType = "application/json", string token = "") where T : new() |
|
|
@ -54,19 +122,20 @@ namespace ICSSoft.FromERP |
|
|
|
httpClient.Timeout = new TimeSpan(0, 0, 60); |
|
|
|
HttpResponseMessage res = httpClient.GetAsync(url).Result; |
|
|
|
res.EnsureSuccessStatusCode(); |
|
|
|
var t = res.Content.ReadAsStringAsync().Result; |
|
|
|
var t = res.Content.ReadAsStringAsync().Result; |
|
|
|
return JsonConvert.DeserializeObject<T>(t); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static async Task<T> PostForm<T, R>(string Url, R message) where T : new() |
|
|
|
public static async Task<T> PostForm<T, R>(string Url, R message, Dictionary<string, string> dic=null) where T : new() |
|
|
|
{ |
|
|
|
var res = new T(); |
|
|
|
|
|
|
|
using (HttpClient httpClient = new HttpClient()) |
|
|
|
{ |
|
|
|
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); |
|
|
|
var body = new List<KeyValuePair<string, string>>(); |
|
|
|
foreach (PropertyInfo info in typeof(R).GetProperties()) |
|
|
|
{ |
|
|
@ -75,21 +144,98 @@ namespace ICSSoft.FromERP |
|
|
|
} |
|
|
|
var content = new FormUrlEncodedContent(body); |
|
|
|
httpClient.DefaultRequestHeaders.Add("Method", "Post"); |
|
|
|
HttpResponseMessage response = await httpClient.PostAsync(Url, content); |
|
|
|
if (dic != null) |
|
|
|
{ |
|
|
|
foreach (var item in dic) |
|
|
|
{ |
|
|
|
httpClient.DefaultRequestHeaders.Add(item.Key, item.Value); |
|
|
|
} |
|
|
|
} |
|
|
|
HttpResponseMessage response = httpClient.PostAsync(Url, content).Result; |
|
|
|
if ((int)response.StatusCode == 200) |
|
|
|
{ |
|
|
|
response.EnsureSuccessStatusCode(); |
|
|
|
string result = response.Content.ReadAsStringAsync().Result; |
|
|
|
res = JsonConvert.DeserializeObject<T>(result); |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
string result = response.Content.ReadAsStringAsync().Result; |
|
|
|
res = JsonConvert.DeserializeObject<T>(result); |
|
|
|
|
|
|
|
} |
|
|
|
return res; |
|
|
|
} |
|
|
|
|
|
|
|
public static async Task<T> HttpPostNoFile<T>(string url, string data) |
|
|
|
{ |
|
|
|
// Encoding encoding = Encoding.UTF8;
|
|
|
|
// string jsonParam = data;
|
|
|
|
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; |
|
|
|
request.Method = "post"; |
|
|
|
request.ContentType = "application/json"; |
|
|
|
|
|
|
|
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); |
|
|
|
request.ContentLength = byteData.Length; |
|
|
|
|
|
|
|
using (Stream postStream = request.GetRequestStream()) |
|
|
|
{ |
|
|
|
postStream.Write(byteData, 0, byteData.Length); |
|
|
|
} |
|
|
|
|
|
|
|
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) |
|
|
|
{ |
|
|
|
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) |
|
|
|
{ |
|
|
|
string result = response.Content.ReadAsStringAsync().Result; |
|
|
|
res = JsonConvert.DeserializeObject<T>(result); |
|
|
|
var result= reader.ReadToEnd().ToString(); |
|
|
|
|
|
|
|
return JsonConvert.DeserializeObject<T>(result); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return res; |
|
|
|
} |
|
|
|
|
|
|
|
public static string PostData(byte[] data, string url, string contentType = "application/json", int timeout = 20) |
|
|
|
{ |
|
|
|
//创建httpWebRequest对象
|
|
|
|
HttpWebRequest httpRequest = null; |
|
|
|
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) |
|
|
|
{ |
|
|
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; |
|
|
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; |
|
|
|
httpRequest = WebRequest.Create(url) as HttpWebRequest; |
|
|
|
httpRequest.ProtocolVersion = HttpVersion.Version10; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
httpRequest = WebRequest.Create(url) as HttpWebRequest; |
|
|
|
} |
|
|
|
if (httpRequest == null) |
|
|
|
{ |
|
|
|
throw new ApplicationException(string.Format("Invalid url string: {0}", url)); |
|
|
|
} |
|
|
|
//填充httpWebRequest的基本信息
|
|
|
|
httpRequest.ContentType = contentType; |
|
|
|
httpRequest.Method = "POST"; |
|
|
|
httpRequest.Timeout = timeout * 1000; |
|
|
|
//填充并发送要post的内容
|
|
|
|
httpRequest.ContentLength = data.Length; |
|
|
|
httpRequest.Headers.Add("deipaaskeyauth", "a5P1RTL4380zd9jpb57qXx63rdynUHN2"); |
|
|
|
using (Stream requestStream = httpRequest.GetRequestStream()) |
|
|
|
{ |
|
|
|
requestStream.Write(data, 0, data.Length); |
|
|
|
requestStream.Close(); |
|
|
|
} |
|
|
|
//发送post请求到服务器并读取服务器返回信息
|
|
|
|
var response = httpRequest.GetResponse(); |
|
|
|
using (Stream responseStream = response.GetResponseStream()) |
|
|
|
{ |
|
|
|
//读取服务器返回信息
|
|
|
|
string stringResponse = string.Empty; |
|
|
|
using (StreamReader responseReader = new StreamReader(responseStream, Encoding.UTF8)) |
|
|
|
{ |
|
|
|
stringResponse = responseReader.ReadToEnd(); |
|
|
|
} |
|
|
|
responseStream.Close(); |
|
|
|
return stringResponse; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |