C#微信开发之旅(二):基础类之HttpClientHelper(更新:SSL安全策略)
时间:2016-06-06 16:45:55
收藏:0
阅读:961
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
评论(0)