From c7d64554ad16f1764294ae2c0b73f3bb210452ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Sun, 9 Oct 2022 09:54:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7httphelper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Yi.Framework.Common/Helper/HttpHelper.cs | 144 +++++++++++------- 1 file changed, 92 insertions(+), 52 deletions(-) diff --git a/Yi.Framework.Net6/Yi.Framework.Common/Helper/HttpHelper.cs b/Yi.Framework.Net6/Yi.Framework.Common/Helper/HttpHelper.cs index 28d367ae..7e639c88 100644 --- a/Yi.Framework.Net6/Yi.Framework.Common/Helper/HttpHelper.cs +++ b/Yi.Framework.Net6/Yi.Framework.Common/Helper/HttpHelper.cs @@ -4,7 +4,9 @@ using System.IO; using System.Linq; using System.Net; using System.Net.Http; +using System.Net.Mime; using System.Text; +using System.Text.Json; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -12,71 +14,109 @@ namespace Yi.Framework.Common.Helper { public static class HttpHelper { - public static string HttpGet(string Url, string postDataStr="") + + public static HttpClient Client { get; set; } = new HttpClient(); + + public static async Task Get(string url) { -#pragma warning disable SYSLIB0014 // 类型或成员已过时 - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); -#pragma warning restore SYSLIB0014 // 类型或成员已过时 - request.Method = "GET"; - request.ContentType = "text/html;charset=UTF-8"; - - HttpWebResponse response = (HttpWebResponse)request.GetResponse(); - Stream myResponseStream = response.GetResponseStream(); - StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); - string retString = myStreamReader.ReadToEnd(); - myStreamReader.Close(); - myResponseStream.Close(); - - return retString; + return await Client.GetStringAsync(url); } - public static bool HttpIOGet(string Url, string file, string postDataStr="") + public static async Task GetIO(string url) { - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); - request.Method = "GET"; - request.ContentType = "text/html;charset=UTF-8"; + return await Client.GetStreamAsync(url); + } - HttpWebResponse response = (HttpWebResponse)request.GetResponse(); - Stream myResponseStream = response.GetResponseStream(); - FileStream writer = new FileStream(file, FileMode.OpenOrCreate, FileAccess.Write); - byte[] buffer = new byte[1024]; - int c; - while ((c = myResponseStream.Read(buffer, 0, buffer.Length)) > 0) + + public static async Task Post(string url, object item = null, Dictionary head = null) + { + + using StringContent json = new(JsonSerializer.Serialize(item), Encoding.UTF8, MediaTypeNames.Application.Json); + + + if (head is not null) { - writer.Write(buffer, 0, c); + foreach (var d in head) + { + json.Headers.Add(d.Key, d.Value); + } } - writer.Close(); - myResponseStream.Close(); - return true; + var httpResponse = await Client.PostAsync(url, json); + + httpResponse.EnsureSuccessStatusCode(); + + var content = httpResponse.Content; + + return await content.ReadAsStringAsync(); } - public static string HttpPost(string Url, string postDataStr="") - { - CookieContainer cookie = new CookieContainer(); -#pragma warning disable SYSLIB0014 // 类型或成员已过时 - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); -#pragma warning restore SYSLIB0014 // 类型或成员已过时 - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); - request.CookieContainer = cookie; - Stream myRequestStream = request.GetRequestStream(); - StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); - myStreamWriter.Write(postDataStr); - myStreamWriter.Close(); +// public static string HttpGet(string Url, string postDataStr="") +// { +//#pragma warning disable SYSLIB0014 // 类型或成员已过时 +// HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); +//#pragma warning restore SYSLIB0014 // 类型或成员已过时 +// request.Method = "GET"; +// request.ContentType = "text/html;charset=UTF-8"; - HttpWebResponse response = (HttpWebResponse)request.GetResponse(); +// HttpWebResponse response = (HttpWebResponse)request.GetResponse(); +// Stream myResponseStream = response.GetResponseStream(); +// StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); +// string retString = myStreamReader.ReadToEnd(); +// myStreamReader.Close(); +// myResponseStream.Close(); - response.Cookies = cookie.GetCookies(response.ResponseUri); - Stream myResponseStream = response.GetResponseStream(); - StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); - string retString = myStreamReader.ReadToEnd(); - myStreamReader.Close(); - myResponseStream.Close(); +// return retString; +// } - return retString; - } +// public static bool HttpIOGet(string Url, string file, string postDataStr="") +// { +// HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); +// request.Method = "GET"; +// request.ContentType = "text/html;charset=UTF-8"; + +// HttpWebResponse response = (HttpWebResponse)request.GetResponse(); +// Stream myResponseStream = response.GetResponseStream(); +// FileStream writer = new FileStream(file, FileMode.OpenOrCreate, FileAccess.Write); +// byte[] buffer = new byte[1024]; +// int c; +// while ((c = myResponseStream.Read(buffer, 0, buffer.Length)) > 0) +// { +// writer.Write(buffer, 0, c); +// } +// writer.Close(); +// myResponseStream.Close(); + +// return true; +// } + +// public static string HttpPost(string Url, string postDataStr="") +// { +// CookieContainer cookie = new CookieContainer(); +//#pragma warning disable SYSLIB0014 // 类型或成员已过时 +// HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); +//#pragma warning restore SYSLIB0014 // 类型或成员已过时 +// request.Method = "POST"; +// request.ContentType = "application/x-www-form-urlencoded"; +// request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); +// request.CookieContainer = cookie; + +// Stream myRequestStream = request.GetRequestStream(); +// StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); +// myStreamWriter.Write(postDataStr); +// myStreamWriter.Close(); + +// HttpWebResponse response = (HttpWebResponse)request.GetResponse(); + +// response.Cookies = cookie.GetCookies(response.ResponseUri); +// Stream myResponseStream = response.GetResponseStream(); +// StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); +// string retString = myStreamReader.ReadToEnd(); +// myStreamReader.Close(); +// myResponseStream.Close(); + +// return retString; +// } } }