|
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;
|
}
|
}
|
|
}
|
}
|