using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Net;
|
using System.Text;
|
using System.Web;
|
using WebService.Log;
|
|
namespace WebService
|
{
|
public class HttpHelper
|
{
|
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 = 30 * 1000;
|
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());
|
}
|
|
//Logger.Write_Log("System/API请求", rquestName, "请求成功", new { 请求报文 = parm, 接收报文 = responseContent });
|
return JsonConvert.DeserializeObject<T>(responseContent);
|
}
|
catch (Exception ex)
|
{
|
//Logger.Write_Log("System/API请求", rquestName, "请求异常", new { 请求报文 = parm, 接收报文 = responseContent, 错误 = ex.Message });
|
new LogFactory().GetLog("接口").InfoFormat(true, rquestName, "请求异常", $"{ex.Message}");
|
}
|
return null;
|
}
|
|
|
public static string PostUrl(string url, string postData)
|
{
|
string result = "";
|
|
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
|
|
req.Method = "POST";
|
|
req.ContentType = "application/json; charset=UTF-8";
|
|
byte[] data = Encoding.UTF8.GetBytes(postData);
|
|
req.ContentLength = data.Length;
|
|
using (Stream reqStream = req.GetRequestStream())
|
{
|
reqStream.Write(data, 0, data.Length);
|
reqStream.Close();
|
}
|
|
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
|
Stream stream = resp.GetResponseStream();
|
|
//获取响应内容
|
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
|
{
|
result = reader.ReadToEnd();
|
}
|
return result;
|
}
|
}
|
}
|