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

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

  1. C#微信开发之旅--自定义菜单

    上一篇说道基本信息的回复<C#微信开发之旅--基本信息的回复>,当中就说到文本信息的回复,其他信息的回复,可以参考下开发文档中回复信息的格式进行修改就可以. 下面来实现下自定义菜单.据我了 ...

  2. C#微信开发之旅--基本信息的回复

    上一篇说到配置和验证<C#微信开发之旅--准备阶段> 下面来实现一下简单的信息回复. 也就是接收XML,返回XML 可以去看下微信开发文档的说明:http://mp.weixin.qq.c ...

  3. C#微信开发之旅--准备阶段

    最近才开始学微信开发的相关内容,记录下,慢慢的养成习惯! 1.申请公众号: 公众号分为 订阅号 和 服务号.他们之前的区别可以点击这里查看 因为我们是测试的,所以可以直接申请测试帐号,就把所有的功能都 ...

  4. 微信开发 企业号(二)-- 回调模式之Tooken验证 .net/python

    在企业号开发者中心中,有加密解密源代码,供给开发者使用.(加解密库下载) 由于官方只提供了python2.*的类库,使用python3.*的朋友可以再最后下载我修改后的py文件(仅修改验证Tooken ...

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

    Force.com是国际知名的云平台公司,成功配置好Force.com作为微信公开号的服务端后,接下来需要的任务是处理用户发送的消息.当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML ...

  6. QT开发之旅二TCP调试工具

    TCP调试工具顾名思义用来调试TCP通信的,网上这样的工具N多,之前用.NET写过一个,无奈在XP下还要安装个.NET框架才能运行,索性这次用QT重写,发现QT写TCP通信比.NET还要便捷一些,运行 ...

  7. 网站实现微信登录之嵌入二维码——基于yii2开发的描述

    之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...

  8. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

  9. C#微信开发小白成长教程二(新手接入指南,附视频)

    距离第一讲又已经过去了一个多星期了,本打算一周更新一讲的,奈何实在太忙.最近也在群里发现有一部分人已经可以熟练调用微信的部分接口但却不是很清楚微信公众平台接收消息的一个处理机制.本讲就来介绍下怎么接入 ...

随机推荐

  1. 开发之UI篇

    首先这里介绍一个软件一个插件,它们的主要功能是方便开发者看UI(如尺寸,颜色,大小等),两个配合使用 一. Sketch软件 1.Sketch  看ui图,还可以切图 2.Sketch 如何切图: 1 ...

  2. CSS IE6/7/8, Firefox, Safari, Chrome, Opera Hack使用简要归纳(转)

    网上有很多关于IE6/7/8, Firefox, Safari, Chrome, Opera CSS Hack的文章,但我觉得太过繁杂,要不给出一张看也看不懂的CSS Hack归纳表,要不就是给出一大 ...

  3. 前端面试——css篇

    css盒子模型 在W3C模型中: 总宽度 = margin-left + border-left + padding-left + width + padding-right + border-rig ...

  4. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  5. java:POI导出excel

    POI是一个开源项目,专用于java平台上操作MS OFFICE,企业应用开发中可用它方便导出Excel. 下面是使用示例: 1.maven中先添加依赖项 <dependency> < ...

  6. 丰富Easyui 的插件 - lookup

    插件用途: 主要用于表单中,某字段的内容是用其他表里的记录ID.当然你可以使用combobox.combotree.combogrid等,但有时这些表现方式并不是很好,希望弹出个层,然后在去做一些查询 ...

  7. es6+移动轮播插件

    前言:之前赶项目,都是直接用框架,对于touch事件是模拟两可,趁着有心情,用es6写一个原生移动轮播插件. 用了es6的新特性,确实挺爽的,说到es6,就不得不说到babel,博主已经码好了,直接用 ...

  8. PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)

    主讲人 网神 (新浪微博: @豆角茄子麻酱凉面) 网神(66707180) 18:57:18 大家好,今天我们讲一下第14章combining models,这一章是联合模型,通过将多个模型以某种形式 ...

  9. DOM之parentNode与offsetParent

    DOM中有两个属性parentNode和offsetParent,想必区别大家都是知道的,可用法上还是有一些需要注意的地方,尤其是后者,想知道吗?继续往下看咯. parentNode指的是父节点,el ...

  10. 网游中的网络编程系列1:UDP vs. TCP

    原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...