C#微信开发之旅(二):基础类之HttpClientHelper(更新:SSL安全策略)

public class HttpClientHelper

  2     {

  3         /// <summary>

  4         /// get请求

  5         /// </summary>

  6         /// <param name="url"></param>

  7         /// <returns></returns>

  8         public static string GetResponse(string url)

  9         {

 10             if (url.StartsWith("https"))

 11                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

 12

 13             HttpClient httpClient = new HttpClient();

 14             httpClient.DefaultRequestHeaders.Accept.Add(

 15                new MediaTypeWithQualityHeaderValue("application/json"));

 16             HttpResponseMessage response = httpClient.GetAsync(url).Result;

 17

 18             if (response.IsSuccessStatusCode)

 19             {

 20                 string result = response.Content.ReadAsStringAsync().Result;

 21                 return result;

 22             }

 23             return null;

 24         }

 25

 26         public static T GetResponse<T>(string url)

 27             where T : class,new()

 28         {

 29             if (url.StartsWith("https"))

 30                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

 31

 32             HttpClient httpClient = new HttpClient();

 33             httpClient.DefaultRequestHeaders.Accept.Add(

 34                new MediaTypeWithQualityHeaderValue("application/json"));

 35             HttpResponseMessage response = httpClient.GetAsync(url).Result;

 36

 37             T result = default(T);

 38

 39             if (response.IsSuccessStatusCode)

 40             {

 41                 Task<string> t = response.Content.ReadAsStringAsync();

 42                 string s = t.Result;

 43

 44                 result = JsonConvert.DeserializeObject<T>(s);

 45             }

 46             return result;

 47         }

 48

 49         /// <summary>

 50         /// post请求

 51         /// </summary>

 52         /// <param name="url"></param>

 53         /// <param name="postData">post数据</param>

 54         /// <returns></returns>

 55         public static string PostResponse(string url, string postData)

 56         {

 57             if (url.StartsWith("https"))

 58                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

 59

 60             HttpContent httpContent = new StringContent(postData);

 61             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

 62             HttpClient httpClient = new HttpClient();

 63

 64             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;

 65

 66             if (response.IsSuccessStatusCode)

 67             {

 68                 string result = response.Content.ReadAsStringAsync().Result;

 69                 return result;

 70             }

 71             return null;

 72         }

 73

 74         /// <summary>

 75         /// 发起post请求

 76         /// </summary>

 77         /// <typeparam name="T"></typeparam>

 78         /// <param name="url">url</param>

 79         /// <param name="postData">post数据</param>

 80         /// <returns></returns>

 81         public static T PostResponse<T>(string url, string postData)

 82             where T : class,new()

 83         {

 84             if (url.StartsWith("https"))

 85                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

 86

 87             HttpContent httpContent = new StringContent(postData);

 88             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

 89             HttpClient httpClient = new HttpClient();

 90

 91             T result = default(T);

 92

 93             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;

 94

 95             if (response.IsSuccessStatusCode)

 96             {

 97                 Task<string> t = response.Content.ReadAsStringAsync();

 98                 string s = t.Result;

 99

100                 result = JsonConvert.DeserializeObject<T>(s);

101             }

102             return result;

103         }

104

105         /// <summary>

106         /// V3接口全部为Xml形式,故有此方法

107         /// </summary>

108         /// <typeparam name="T"></typeparam>

109         /// <param name="url"></param>

110         /// <param name="xmlString"></param>

111         /// <returns></returns>

112         public static T PostXmlResponse<T>(string url, string xmlString)

113             where T : class,new()

114         {

115             if (url.StartsWith("https"))

116                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

117

118             HttpContent httpContent = new StringContent(xmlString);

119             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

120             HttpClient httpClient = new HttpClient();

121

122             T result = default(T);

123

124             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;

125

126             if (response.IsSuccessStatusCode)

127             {

128                 Task<string> t = response.Content.ReadAsStringAsync();

129                 string s = t.Result;

130

131                 result = XmlDeserialize<T>(s);

132             }

133             return result;

134         }

135

136         /// <summary>

137         /// 反序列化Xml

138         /// </summary>

139         /// <typeparam name="T"></typeparam>

140         /// <param name="xmlString"></param>

141         /// <returns></returns>

142         public static T XmlDeserialize<T>(string xmlString)

143             where T : class,new ()

144         {

145             try

146             {

147                 XmlSerializer ser = new XmlSerializer(typeof(T));

148                 using (StringReader reader = new StringReader(xmlString))

149                 {

150                     return (T)ser.Deserialize(reader);

151                 }

152             }

153             catch (Exception ex)

154             {

155                 throw new Exception("XmlDeserialize发生异常:xmlString:" + xmlString + "异常信息:" + ex.Message);

156             }

157

158         }

159     }

转载地址:http://www.2cto.com/weixin/201501/367405.html

时间: 2024-10-13 18:47:48

C#微信开发之旅(二):基础类之HttpClientHelper(更新:SSL安全策略)的相关文章

C#微信开发之旅(三):AccessToken获取及全局管理

由于AccessToken有效期为2小时,并且接口调用有数量限制,所以开始时选择用WCF做了全局管理(项目中要到AccessToken的地方太多了,支付相关.生成二维码.获取用户信息.菜单操作等等) 下面是AccessToken全局管理的单例类,(原理:通过微信接口获取AccessToken,存储在内存中,当其他项目调用时,会判断是否过期,过期去拿新Token再返回): 1 /// <summary> 2 /// AccessToken类,公众号通过此token 获取相关信息 (单例类) 3

Force.com微信开发系列(二)用户消息处理

Force.com是国际知名的云平台公司,成功配置好Force.com作为微信公开号的服务端后,接下来需要的任务是处理用户发送的消息.当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL,通常有的消息类型有文本信息.图片信息.语音信息.视频信息.地理位置信息以及链接信息.关于每种消息的XML数据包的详细结构,请参见http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE

C#微信开发之旅(十三):V2订单查询&amp;退款(完结)

订单查询 用处同V3订单查询,直接上代码: 1 /// <summary> 2 /// V2订单查询 3 /// </summary> 4 public void QueryOrder() 5 { 6 string orderNo = string.Empty; 7 8 WxPayModel model = WxPayModel.Create(orderNo); 9 OrderQueryMessage message = WeiXinHelper.OrderQuery(model.

微信开发H5十二人牛牛出租源码下载搭建

微信开发H5十二人牛牛出租源码下载搭建h5.fanshubbs.com联系Q1687054422不同于传统的手游商店下载模式,HTML5 手机网页游戏是可以直接运行在微信内置的浏览器里. 先上图,感知一下具体样子: 而我想分享的是我们在具体开发实现过程中,基于微信的Html5 WebApp需要去克服的一些坑:这个小游戏的基本规则是:限定用户每天刮书次数是2次 (自由刮一次和分享后再刮一次),每天都可刮奖为此,我们希望实现的思路首先是限定在只能使用微信中玩,实现代码如下:if (!HttpCont

微信开发——带参数二维码的使用

---恢复内容开始--- 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Mod

C#微信开发之旅(九):JSAPI支付(V3)(相关代码待补全)

微信开发遇到最复杂的就是支付了,无论V2还是V3.这篇文章将给出全套的V3版本JSAPI支付代码,包括预支付->支付->订单查询->通知->退款,其中前三步已经上线应用,退款只是简单测试了一下,大家要用的话需要谨慎... 一.预支付&支付 实际就是讲订单信息交给微信端,返回给我们一个预支付id(与V2app支付相似),支付时将预支付id交给微信处理.注意:预支付id 需存储,每个out_trade_no(我们自己的订单号)只能对应一个预支付id.代码奉上:(mvc demo

微信开发学习日记(二):3个案例

上次是调通了"消息来自微信请求"一个请求验证接口.    今天下午,正式进军微信开发,完成了3个案例的demo,测试通过. 上次,提到读了5本书,4本PHP描述的,一本Java描述的.个人专注Java开发7年了,更倾向于用Java,当然PHP也要立即着手深入学习了.今天好几个PHP的外包项目,感觉太麻烦,都拒绝了. Java的书,柳峰写的那本就非常好,至少可以用Good描述,Perfect的话,要看是否还有更多更优秀Java语言相关的微信书籍. 那本书的源码,网上都有,下载下来之后,全

C#微信开发之旅(二):基础类之HttpClientHelper

包含通过HttpClient发起get或post请求的方法,所有调用微信接口的操作都通过此类.话不多说,直接上代码: 1 public class HttpClientHelper 2 { 3 /// <summary> 4 /// get请求 5 /// </summary> 6 /// <param name="url"></param> 7 /// <returns></returns> 8 public s

C#微信开发之旅(三):基础类之WeiXinConst

开发过程中需要用的的公众号信息在这里配置,此外需要用到的Url信息无需更改. /// <summary> /// 微信 需要用到的Url.Json常量 /// </summary> public class WeiXinConst { #region Value Const /// <summary> /// 微信开发者 AppId /// </summary> public const string AppId = "你的AppId";