@Aiti
2019-11-19T01:40:44.000000Z
字数 2832
阅读 230
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(); ;}}