最近因为工作关系,需要通过HttpWebRequest去请求API,所有就写了个简单的辅助public sealed class HttpRequestHelper
{ private static string USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36"; private static string ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; private static string CONTENT_TYPE = "application/x-www-form-urlencoded; encoding=UTF-8"; ////// 单例 /// private static volatile HttpRequestHelper instance; private static object syncRoot = new object(); private HttpRequestHelper() { } public static HttpRequestHelper Instance { get { if (instance == null) { lock (syncRoot) { if (instance == null) { instance = new HttpRequestHelper(); } } } return instance; } } ////// Get请求 /// /// url参数 ///json格式结果 public string Get(string URL) { string ret = string.Empty; URL = URL.Replace("ACCESS_TOKEN", WxTokenHelper.Instance.Token); var request = CreateRequest("GET", URL); var response = request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8); ret = readStream.ReadToEnd(); readStream.Close(); return ret; } public string GetToken(string URL) { string ret = string.Empty; var request = CreateRequest("GET", URL); var response = request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8); ret = readStream.ReadToEnd(); readStream.Close(); return ret; } ////// Post请求 /// /// 请求的URL /// json格式参数 ///json格式结果 public string Post(string URL, string jsonData) { string ret = string.Empty; URL = URL.Replace("ACCESS_TOKEN", WxTokenHelper.Instance.Token); var request = CreateRequest("POST", URL); if (!string.IsNullOrWhiteSpace(jsonData)) { byte[] data = Encoding.UTF8.GetBytes(jsonData); request.ContentLength = data.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(data, 0, data.Length); }; var response = request.GetResponse() as HttpWebResponse; using (var responseStream = response.GetResponseStream()) { using (var readStream = new StreamReader(responseStream, Encoding.UTF8)) { ret = readStream.ReadToEnd(); } } } return ret; } private HttpWebRequest CreateRequest(string method, string URL) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); request.Accept = ACCEPT; request.UserAgent = USER_AGENT; request.Method = method; request.ContentType = CONTENT_TYPE; request.Proxy = null; return request; } }