¶Ô±ÈÐÂÎļþ |
| | |
| | |  |
| | | using Newtonsoft.Json; |
| | | using System.Net; |
| | | using System.Text; |
| | | using WIDESEA_Common.Log; |
| | | |
| | | namespace WIDESEA_Comm.Http |
| | | { |
| | | public class HttpHelpers |
| | | { |
| | | private const int Timeout = 10 * 1000; |
| | | |
| | | /// <summary> |
| | | /// postè¯·æ± |
| | | /// </summary> |
| | | /// <param name="url"></param> |
| | | /// <param name="parm">åæ°</param> |
| | | /// <param name="rquestName">æ¥å£åç§°,ç¨äºæ¥å¿åç±»</param> |
| | | /// <returns></returns> |
| | | public static string Post(string url, object parm, string rquestName = "") |
| | | { |
| | | HttpWebResponse response = null; |
| | | StreamReader resultReader = null; |
| | | string responseContent = string.Empty; |
| | | try |
| | | { |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); |
| | | request.Timeout = Timeout; |
| | | request.Method = "POST"; |
| | | request.ContentType = "application/json; charset=UTF-8"; |
| | | parm = parm ?? ""; |
| | | byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(parm)); |
| | | request.ContentLength = data.Length; |
| | | using (Stream newStream = request.GetRequestStream()) |
| | | { |
| | | newStream.Write(data, 0, data.Length); |
| | | }; |
| | | |
| | | response = (HttpWebResponse)request.GetResponse(); |
| | | Stream webStream = response.GetResponseStream(); |
| | | if (webStream == null) |
| | | { |
| | | throw new Exception("Network error"); |
| | | } |
| | | |
| | | int statsCode = (int)response.StatusCode; |
| | | resultReader = new StreamReader(webStream, Encoding.UTF8); |
| | | responseContent = resultReader.ReadToEnd(); |
| | | |
| | | if (response != null) |
| | | response.Close(); |
| | | if (resultReader != null) |
| | | resultReader.Close(); |
| | | |
| | | if (statsCode != 200) |
| | | { |
| | | throw new Exception("å¼å¸¸ï¼ååºç ï¼" + statsCode.ToString()); |
| | | } |
| | | |
| | | //WriteLog.Write_Log("System/API请æ±", rquestName, "è¯·æ±æå", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent }); |
| | | return responseContent; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Write_Log("API", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// postè¯·æ± |
| | | /// </summary> |
| | | /// <param name="url"></param> |
| | | /// <param name="parm">åæ°</param> |
| | | /// <param name="rquestName">æ¥å£åç§°,ç¨äºæ¥å¿åç±»</param> |
| | | /// <returns></returns> |
| | | public static T Post<T>(string url, object parm, string rquestName = "") where T : class |
| | | { |
| | | HttpWebResponse response = null; |
| | | StreamReader resultReader = null; |
| | | string responseContent = string.Empty; |
| | | try |
| | | { |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); |
| | | request.Timeout = Timeout; |
| | | request.Method = "POST"; |
| | | request.ContentType = "application/json; charset=UTF-8"; |
| | | parm = parm ?? ""; |
| | | byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(parm)); |
| | | request.ContentLength = data.Length; |
| | | using (Stream newStream = request.GetRequestStream()) |
| | | { |
| | | newStream.Write(data, 0, data.Length); |
| | | }; |
| | | |
| | | response = (HttpWebResponse)request.GetResponse(); |
| | | Stream webStream = response.GetResponseStream(); |
| | | if (webStream == null) |
| | | { |
| | | throw new Exception("Network error"); |
| | | } |
| | | |
| | | int statsCode = (int)response.StatusCode; |
| | | resultReader = new StreamReader(webStream, Encoding.UTF8); |
| | | responseContent = resultReader.ReadToEnd(); |
| | | |
| | | if (response != null) |
| | | response.Close(); |
| | | if (resultReader != null) |
| | | resultReader.Close(); |
| | | |
| | | if (statsCode != 200) |
| | | { |
| | | throw new Exception("å¼å¸¸ï¼ååºç ï¼" + statsCode.ToString()); |
| | | } |
| | | |
| | | //WriteLog.Write_Log("System/API请æ±", rquestName, "è¯·æ±æå", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent }); |
| | | return JsonConvert.DeserializeObject<T>(responseContent); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Write_Log("API", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// getè¯·æ± |
| | | /// </summary> |
| | | /// <typeparam name="T"></typeparam> |
| | | /// <param name="url"></param> |
| | | /// <param name="parm">请æ±åæ°ï¼æ·»å å¨url</param> |
| | | /// <param name="rquestName"></param> |
| | | /// <returns></returns> |
| | | public static T Get<T>(string url, object parm = null, string rquestName = "") where T : class |
| | | { |
| | | HttpWebResponse response = null; |
| | | StreamReader resultReader = null; |
| | | string responseContent = string.Empty; |
| | | try |
| | | { |
| | | if (parm != null) |
| | | { |
| | | var datas = JsonConvert.DeserializeObject<Dictionary<string, string>>(JsonConvert.SerializeObject(parm)); |
| | | var keyList = datas.Keys; |
| | | int index = 0; |
| | | foreach (var key in datas.Keys) |
| | | { |
| | | if (index == 0) |
| | | { |
| | | url += $"?{key}={datas[key]}"; |
| | | } |
| | | else |
| | | { |
| | | url += $"&{key}={datas[key]}"; |
| | | } |
| | | index++; |
| | | } |
| | | } |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); |
| | | request.Timeout = Timeout; |
| | | request.Method = "GET"; |
| | | request.ContentType = "application/json; charset=UTF-8"; |
| | | |
| | | response = (HttpWebResponse)request.GetResponse(); |
| | | Stream webStream = response.GetResponseStream(); |
| | | if (webStream == null) |
| | | { |
| | | throw new Exception("Network error"); |
| | | } |
| | | |
| | | int statsCode = (int)response.StatusCode; |
| | | resultReader = new StreamReader(webStream, Encoding.UTF8); |
| | | responseContent = resultReader.ReadToEnd(); |
| | | |
| | | if (response != null) |
| | | response.Close(); |
| | | if (resultReader != null) |
| | | resultReader.Close(); |
| | | |
| | | if (statsCode != 200) |
| | | { |
| | | throw new Exception("å¼å¸¸ï¼ååºç ï¼" + statsCode.ToString()); |
| | | } |
| | | |
| | | WriteLog.Write_Log("API", rquestName, "è¯·æ±æå", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent }); |
| | | return JsonConvert.DeserializeObject<T>(responseContent); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Write_Log("API", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |