**
HttpHelpers Http请求方法 类
**
public class HttpHelpers
{
/// <summary>
/// Post请求
/// </summary>
/// <param name="url">链接地址</param>
/// <param name="jsonStr">数据</param>
/// <param name="timeout">超时时间(秒)</param>
/// <returns></returns>
public static async Task<string> PostAsync(string url, string jsonStr = "", IList<RequestHeader> headers = null, int timeout = 20)
{
try
{
using (var client = new HttpClient())
{
if (headers != null && headers.Any())
{
foreach (var item in headers)
{
client.DefaultRequestHeaders.Add(item.Name, item.Value);
}
}
client.Timeout = new TimeSpan(0, 0, timeout);
var content = new StringContent(jsonStr, Encoding.UTF8);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var res = await client.PostAsync(url, content);
return await res.Content.ReadAsStringAsync();
}
}
catch (Exception ex)
{
throw ex;
}
}
public static async Task<string> PostAsync(string url, object reqObj, IList<RequestHeader> headers = null, int timeout = 20)
{
return await PostAsync(url, JsonConvert.SerializeObject(reqObj ?? string.Empty), headers, timeout);
}
/// <summary>
/// Post请求
/// </summary>
/// <param name="url">链接地址</param>
/// <param name="jsonStr">数据</param>
/// <param name="timeout">超时时间(毫秒)</param>
/// <returns></returns>
public static string Post(string url, string jsonStr = "", int timeout = 5000, int type = 0)
{
try
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
Encoding encoding = Encoding.UTF8;
byte[] bs = Encoding.UTF8.GetBytes(jsonStr);
string responseData = String.Empty;
req.Method = "POST";
req.ContentType = type == 0 ? "application/json; charset=utf-8" : "application/x-www-form-urlencoded";
req.ContentLength = bs.Length;
req.Timeout = timeout;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
reqStream.Close();
}
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd().ToString();
}
return responseData;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// POST同步请求方法
/// </summary>
/// <param name="url">请求的URL</param>
/// <param name="strJson">请求的POST JOSN值</param>
/// <param name="timeout">默认30S</param>
/// <returns></returns>
public static string HttpPost(string url, string strJson, int timeout = 30000)
{
return HttpPost(url, strJson, null, timeout);
}
/// <summary>
/// POST同步请求方法
/// </summary>
/// <param name="url">请求的URL</param>
/// <param name="strJson">请求的POST JOSN值</param>
/// <param name="timeout">默认30S</param>
/// <returns></returns>
public static string HttpPost(string url, string strJson, IList<RequestHeader> headers, int timeout = 30000)
{
try
{
HttpClient client = new HttpClient();
if (headers != null && headers.Any())
{
foreach (var item in headers)
{
client.DefaultRequestHeaders.Add(item.Name, item.Value);
}
}
HttpContent content = new StringContent(strJson);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
Task<HttpResponseMessage> res = client.PostAsync(url, content);
if (res.Result.StatusCode == HttpStatusCode.OK)
{
string str = res.Result.Content.ReadAsStringAsync().Result;
return str;
}
else
throw new Exception(res.Result.Content.ReadAsStringAsync().Result);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Get请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="timeout">超时时间(秒)</param>
/// <returns></returns>
public static async Task<string> GetAsync(string url, int timeout = 5)
{
try
{
var responseMessage = new HttpResponseMessage();
using (var client = new HttpClient())
{
client.Timeout = new TimeSpan(0, 0, timeout);
responseMessage = await client.GetAsync(url);
}
return await responseMessage.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// Get请求
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
return Get(url, null);
}
/// <summary>
/// Get请求
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url, IList<RequestHeader> headers)
{
string result = "";
try
{
var httpclient = new HttpClient();
if (headers != null && headers.Any())
{
foreach (var item in headers)
{
httpclient.DefaultRequestHeaders.Add(item.Name, item.Value);
}
}
var response = httpclient.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
Stream myResponseStream = response.Content.ReadAsStreamAsync().Result;
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
result = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
}
}
catch (Exception ex)
{
throw ex;
}
return result;
}
public class RequestHeader
{
public string Name { get; set; }
public string Value { get; set; }
}
}