@Aiti
2019-11-19T01:40:44.000000Z
字数 2832
阅读 202
Http请求
public static class HttpHelper
{
/// <summary>
/// 获取返回结果http请求
/// </summary>
/// <param name="webRequest">webRequest对象</param>
/// <returns>请求返回值</returns>
public static string WebResponseGet(HttpWebRequest webRequest)
{
try
{
using (var httpWebResponse = (HttpWebResponse)webRequest.GetResponseAsync().Result)
{
var stream = httpWebResponse.GetResponseStream();
if (stream == null) return null;
using (var responseReader = new StreamReader(stream, Encoding.UTF8))
{
return responseReader.ReadToEnd();
}
}
}
catch (WebException wex)
{
var responseData = String.Empty;
if (wex.Status == WebExceptionStatus.ProtocolError)
{
try
{
var wexStream = wex.Response.GetResponseStream();
if (wexStream == null) return null;
using (StreamReader responseReader = new StreamReader(wexStream))
{
responseData = responseReader.ReadToEnd();
}
}
catch { }
}
if (!string.IsNullOrEmpty(responseData))
{
return responseData;
}
throw;
}
}
/// <summary>
/// 同步方式发起http get请求
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="queryString">参数字符串</param>
/// <returns>请求返回值</returns>
public static string HttpGet(string url, string queryString = null)
{
if (!string.IsNullOrEmpty(queryString))
url += "?" + queryString.Trim(' ', '?', '&');
var webRequest = WebRequest.Create(url) as HttpWebRequest;
if (webRequest == null) return null;
webRequest.Method = "GET";
webRequest.ContinueTimeout = 200000;
return WebResponseGet(webRequest);
}
/// <summary>
/// 同步方式发起http get请求
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="paras">请求参数列表</param>
/// <returns>请求返回值</returns>
public static string HttpGet(string url, Dictionary<string, string> paras)
{
var querystring = GetQueryFromParas(paras);
return HttpGet(url, querystring);
}
/// <summary>
/// 同步方式发起http post请求
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="queryString">参数字符串</param>
/// <returns>请求返回值</returns>
public static string HttpPost(string url, string queryString = null)
{
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
if (webRequest == null) return null;
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContinueTimeout = 20000;
//POST the data.
using (var requestWriter = new StreamWriter(webRequest.GetRequestStreamAsync().Result))
{
requestWriter.Write(queryString);
}
return WebResponseGet(webRequest);
}
/// <summary>
/// 同步方式发起http post请求
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="paras">请求参数列表</param>
/// <returns>请求返回值</returns>
public static string HttpPost(string url, Dictionary<string, string> paras)
{
var querystring = GetQueryFromParas(paras);
return HttpPost(url, querystring);
}
/// <summary>
/// 将Dictionary参数组合成字符串
/// </summary>
/// <param name="paras"></param>
public static string GetQueryFromParas(Dictionary<string, string> paras)
{
if (paras == null || paras.Count == 0) return "";
var buffer = new StringBuilder();
var count = 1;
foreach (var key in paras.Keys)
{
buffer.AppendFormat("{0}={1}", key, Uri.EscapeDataString(paras[key]));
if (count < paras.Count)
{
buffer.Append("&");
}
count++;
}
return buffer.ToString(); ;
}
}