public static string GetContentPost(string uri, string contentType, string data, Encoding coding,string appname, int timeout = 10000)
{
coding = coding ?? Encoding.UTF8;
byte[] buffer = !string.IsNullOrEmpty(data) ? coding.GetBytes(data) : new byte[0];
WebRequest request = WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = contentType;
request.ContentLength = buffer.Length;
request.Proxy = null;
//request.Headers.Add("Authorization", Authorization); //添加Authorization头
request.Timeout = timeout;
request.Headers.Add("appname", appname);
using (Stream stream = request.GetRequestStream())
{
stream.Write(buffer, 0, buffer.Length);
}
try
{
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
{
return new StreamReader(stream, coding).ReadToEnd();
}
}
catch (WebException ex) when (ex.Response != null)
{
using (var response = ex.Response)
using (var stream = response.GetResponseStream())
{
string errorContent = new StreamReader(stream, coding).ReadToEnd();
//获取HTTP状态码
HttpStatusCode statusCode = ((HttpWebResponse)response).StatusCode;
//写入EX的massage
throw new WebException($"请求失败: {ex.Status}" +
$"\r\n HTTP状态码:{statusCode} " +
$"\r\n URL:{uri} ", ex);
}
}
}