Contains methods for initiating get or post requests through HttpClient. All operations calling the WeChat interface go through this class. Without further ado, let’s go directly to the code:
2014-10-31 Code update: WeChat SSL security policy adjustment, turning off support for SSLv2 and SSLv3 versions, and no longer supporting some versions of SSLv2, SSLv3 or lower Client call.
public class HttpClientHelper { ////// get请求 /// /// ///public static string GetResponse(string url) { if (url.StartsWith("https")) System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { string result = response.Content.ReadAsStringAsync().Result; return result; } return null; } public static T GetResponse (string url) where T : class,new() { if (url.StartsWith("https")) System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = httpClient.GetAsync(url).Result; T result = default(T); if (response.IsSuccessStatusCode) { Task t = response.Content.ReadAsStringAsync(); string s = t.Result; result = JsonConvert.DeserializeObject (s); } return result; } /// /// post请求 /// /// /// post数据 ///public static string PostResponse(string url, string postData) { if (url.StartsWith("https")) System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient httpClient = new HttpClient(); HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { string result = response.Content.ReadAsStringAsync().Result; return result; } return null; } /// /// 发起post请求 /// ////// url /// post数据 /// public static T PostResponse (string url, string postData) where T : class,new() { if (url.StartsWith("https")) System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; HttpContent httpContent = new StringContent(postData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient httpClient = new HttpClient(); T result = default(T); HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { Task t = response.Content.ReadAsStringAsync(); string s = t.Result; result = JsonConvert.DeserializeObject (s); } return result; } /// /// V3接口全部为Xml形式,故有此方法 /// ////// /// /// public static T PostXmlResponse (string url, string xmlString) where T : class,new() { if (url.StartsWith("https")) System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; HttpContent httpContent = new StringContent(xmlString); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); HttpClient httpClient = new HttpClient(); T result = default(T); HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { Task t = response.Content.ReadAsStringAsync(); string s = t.Result; result = XmlDeserialize (s); } return result; } /// /// 反序列化Xml /// ////// /// public static T XmlDeserialize (string xmlString) where T : class,new () { try { XmlSerializer ser = new XmlSerializer(typeof(T)); using (StringReader reader = new StringReader(xmlString)) { return (T)ser.Deserialize(reader); } } catch (Exception ex) { throw new Exception("XmlDeserialize发生异常:xmlString:" + xmlString + "异常信息:" + ex.Message); } } }
For more C# WeChat development journey: basic class HttpClientHelper (update: SSL security policy) related articles, please pay attention to the PHP Chinese website!