using MES.Utility.Core; using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Http; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; namespace 常用工具集.Utility.Network { public class HttpUtils { public static bool DoGetFile(string url, string filePath, int? timeout) { var task = DoGetFileAsync(url, filePath); if (timeout != null) { if (!task.Wait(timeout.Value)) { return false; } } return task.Result; } public static byte[] DoGetFile(string url, int? timeout) { var task = DoGetFileAsync(url); if (timeout != null) { if (!task.Wait(timeout.Value)) { return null; } } return task.Result; } public static async Task DoGetFileAsync(string url, string filePath) { try { var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); var fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); await response.Content.CopyToAsync(fileStream); fileStream.Close(); return true; } catch { return false; } } public static async Task DoGetFileAsync(string url) { try { var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); MemoryStream memoryStream = new MemoryStream(); return await response.Content.ReadAsByteArrayAsync(); } catch { return null; } } /// /// 通过Get请求数据 /// /// /// /// /// public static string DoGet(string url, Dictionary parametersDict, int? timeout) { var task = DoGetAsync(url, parametersDict); if (timeout != null) { if (!task.Wait(timeout.Value)) { return null; } } return task.Result; } /// /// 通过Get请求数据 /// /// /// /// public static async Task DoGetAsync(string url, Dictionary parametersDict) { try { if (!url.Contains("?")) url = url + "?"; foreach (string key in parametersDict.Keys) { url = url + key + "=" + parametersDict[key] + "&"; } url = url.Substring(0, url.Length - 1); var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); string str= await response.Content.ReadAsStringAsync(); return str; } catch { return string.Empty; } } /// /// 通过Post上传文件:multipart/form-data /// /// /// /// /// /// public static string DoPostFile(string url, Dictionary parms, Dictionary fileParms, int? timeout) { var task = DoPostFileAsync(url, parms, fileParms); if (timeout != null) { if (!task.Wait(timeout.Value)) { return null; } } return task.Result; } /// /// 通过Post上传文件:multipart/form-data /// /// /// /// /// public static async Task DoPostFileAsync(string url, Dictionary parms, Dictionary fileParms) { try { var httpClient = new HttpClient(); var content = new MultipartFormDataContent(); if (parms != null) { foreach (KeyValuePair keyValue in parms) { content.Add(new StringContent(keyValue.Value), keyValue.Key); } } if (fileParms != null) { foreach (KeyValuePair keyValue in fileParms) { string filePath = keyValue.Value; string fileName = Path.GetFileName(filePath); if (!File.Exists(filePath)) { continue; } content.Add(new ByteArrayContent(File.ReadAllBytes(filePath)), keyValue.Key, fileName); } } var response = await httpClient.PostAsync(url, content); return await response.Content.ReadAsStringAsync(); } catch (Exception ex) { return string.Empty; } } /// /// 通过Post请求数据: application/x-www-form-urlencoded /// /// /// /// /// public static string DoPostForm(string url, Dictionary parms, int? timeout) { var task = DoPostFormAsync(url, parms); if (timeout != null) { if (!task.Wait(timeout.Value)) { return null; } } return task.Result; } /// /// 通过Post请求数据: application/x-www-form-urlencoded /// /// /// /// public static async Task DoPostFormAsync(string url, Dictionary parms) { try { var httpClient = new HttpClient(); FormUrlEncodedContent formData; if (parms != null) { formData = new FormUrlEncodedContent(parms); } else { formData = new FormUrlEncodedContent(new Dictionary()); } var response = await httpClient.PostAsync(url, formData); return await response.Content.ReadAsStringAsync(); } catch (Exception ex) { return string.Empty; } } /// /// 通过Post请求数据: application/x-www-form-urlencoded /// /// /// /// /// public static string DoPostJson(string url, string json, int? timeout) { var task = DoPostJsonAsync(url, json); if (timeout != null) { if (!task.Wait(timeout.Value)) { return null; } } return task.Result; } /// /// 通过Post请求数据: application/x-www-form-urlencoded /// /// /// /// public static async Task DoPostJsonAsync(string url, string json) { try { var httpClient = new HttpClient(); StringContent jsonContent = new StringContent(json, Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync(url, jsonContent); return await response.Content.ReadAsStringAsync(); } catch (Exception ex) { return string.Empty; } } /// /// 通过Post请求数据: application/x-www-form-urlencoded /// /// /// /// /// public static string DoPostData(string url, object data, int? timeout) { var task = DoPostDataAsync(url, data); if (timeout != null) { if (!task.Wait(timeout.Value)) { return null; } } return task.Result; } /// /// 通过Post请求数据: application/x-www-form-urlencoded /// /// /// /// public static async Task DoPostDataAsync(string url, object obj) { try { var httpClient = new HttpClient(); StringContent jsonContent = new StringContent(obj.ToJson(), Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync(url, jsonContent); return await response.Content.ReadAsStringAsync(); } catch (Exception ex) { return string.Empty; } } } }