C# HttpClient请求

  1 using Newtonsoft.Json;
  2 using System;
  3 using System.Collections.Generic;
  4 using System.IO;
  5 using System.Linq;
  6 using System.Net;
  7 using System.Net.Http;
  8 using System.Net.Http.Headers;
  9 using System.Text;
 10 using System.Threading.Tasks;
 11 using System.Xml.Serialization;
 12 
 13 namespace SXYC.Common
 14 {
 15     public class HttpClientHelpClass
 16     {
 17         /// <summary>
 18         /// get请求
 19         /// </summary>
 20         /// <param name="url"></param>
 21         /// <returns></returns>
 22         public static string GetResponse(string url, out string statusCode)
 23         {
 24             if (url.StartsWith("https"))
 25                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
 26 
 27             var httpClient = new HttpClient();
 28             httpClient.DefaultRequestHeaders.Accept.Add(
 29               new MediaTypeWithQualityHeaderValue("application/json"));
 30             HttpResponseMessage response = httpClient.GetAsync(url).Result;
 31             statusCode = response.StatusCode.ToString();
 32             if (response.IsSuccessStatusCode)
 33             {
 34                 string result = response.Content.ReadAsStringAsync().Result;
 35                 return result;
 36             }
 37             return null;
 38         }
 39 
 40         public static string RestfulGet(string url)
 41         {
 42             HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
 43             // Get response
 44             using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
 45             {
 46                 // Get the response stream
 47                 StreamReader reader = new StreamReader(response.GetResponseStream());
 48                 // Console application output
 49                 return reader.ReadToEnd();
 50             }
 51         }
 52 
 53         public static T GetResponse<T>(string url)
 54            where T : class, new()
 55         {
 56             if (url.StartsWith("https"))
 57                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
 58 
 59             var httpClient = new HttpClient();
 60             httpClient.DefaultRequestHeaders.Accept.Add(
 61                new MediaTypeWithQualityHeaderValue("application/json"));
 62             HttpResponseMessage response = httpClient.GetAsync(url).Result;
 63 
 64             T result = default(T);
 65 
 66             if (response.IsSuccessStatusCode)
 67             {
 68                 Task<string> t = response.Content.ReadAsStringAsync();
 69                 string s = t.Result;
 70 
 71                 result = JsonConvert.DeserializeObject<T>(s);
 72             }
 73             return result;
 74         }
 75 
 76         /// <summary>
 77         /// post请求
 78         /// </summary>
 79         /// <param name="url"></param>
 80         /// <param name="postData">post数据</param>
 81         /// <returns></returns>
 82         public static string PostResponse(string url, string postData, out string statusCode)
 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             httpContent.Headers.ContentType.CharSet = "utf-8";
 90 
 91             HttpClient httpClient = new HttpClient();
 92             //httpClient..setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
 93 
 94             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
 95 
 96             statusCode = response.StatusCode.ToString();
 97             if (response.IsSuccessStatusCode)
 98             {
 99                 string result = response.Content.ReadAsStringAsync().Result;
100                 return result;
101             }
102 
103             return null;
104         }
105 
106         /// <summary>
107         /// 发起post请求
108         /// </summary>
109         /// <typeparam name="T"></typeparam>
110         /// <param name="url">url</param>
111         /// <param name="postData">post数据</param>
112         /// <returns></returns>
113         public static T PostResponse<T>(string url, string postData)
114             where T : class, new()
115         {
116             if (url.StartsWith("https"))
117                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
118 
119             HttpContent httpContent = new StringContent(postData);
120             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
121             HttpClient httpClient = new HttpClient();
122 
123             T result = default(T);
124 
125             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
126 
127             if (response.IsSuccessStatusCode)
128             {
129                 Task<string> t = response.Content.ReadAsStringAsync();
130                 string s = t.Result;
131 
132                 result = JsonConvert.DeserializeObject<T>(s);
133             }
134             return result;
135         }
136 
137 
138         /// <summary>
139         /// 反序列化Xml
140         /// </summary>
141         /// <typeparam name="T"></typeparam>
142         /// <param name="xmlString"></param>
143         /// <returns></returns>
144         public static T XmlDeserialize<T>(string xmlString)
145             where T : class, new()
146         {
147             try
148             {
149                 XmlSerializer ser = new XmlSerializer(typeof(T));
150                 using (StringReader reader = new StringReader(xmlString))
151                 {
152                     return (T)ser.Deserialize(reader);
153                 }
154             }
155             catch (Exception ex)
156             {
157                 throw new Exception("XmlDeserialize发生异常:xmlString:" + xmlString + "异常信息:" + ex.Message);
158             }
159 
160         }
161 
162         public static string PostResponse(string url, string postData, string token, string appId, string serviceURL, out string statusCode)
163         {
164             if (url.StartsWith("https"))
165                 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
166 
167             HttpContent httpContent = new StringContent(postData);
168             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
169             httpContent.Headers.ContentType.CharSet = "utf-8";
170 
171             httpContent.Headers.Add("token", token);
172             httpContent.Headers.Add("appId", appId);
173             httpContent.Headers.Add("serviceURL", serviceURL);
174 
175 
176             HttpClient httpClient = new HttpClient();
177             //httpClient..setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "utf-8");
178 
179             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
180 
181             statusCode = response.StatusCode.ToString();
182             if (response.IsSuccessStatusCode)
183             {
184                 string result = response.Content.ReadAsStringAsync().Result;
185                 return result;
186             }
187 
188             return null;
189         }
190 
191         /// <summary>
192         /// 修改API
193         /// </summary>
194         /// <param name="url"></param>
195         /// <param name="postData"></param>
196         /// <returns></returns>
197         public static string KongPatchResponse(string url, string postData)
198         {
199             var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
200             httpWebRequest.ContentType = "application/x-www-form-urlencoded";
201             httpWebRequest.Method = "PATCH";
202 
203             byte[] btBodys = Encoding.UTF8.GetBytes(postData);
204             httpWebRequest.ContentLength = btBodys.Length;
205             httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
206 
207             HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
208             var streamReader = new StreamReader(httpWebResponse.GetResponseStream());
209             string responseContent = streamReader.ReadToEnd();
210 
211             httpWebResponse.Close();
212             streamReader.Close();
213             httpWebRequest.Abort();
214             httpWebResponse.Close();
215 
216             return responseContent;
217         }
218 
219         /// <summary>
220         /// 创建API
221         /// </summary>
222         /// <param name="url"></param>
223         /// <param name="postData"></param>
224         /// <returns></returns>
225         public static string KongAddResponse(string url, string postData)
226         {
227             if (url.StartsWith("https"))
228                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
229             HttpContent httpContent = new StringContent(postData);
230             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "utf-8" };
231             var httpClient = new HttpClient();
232             HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
233             if (response.IsSuccessStatusCode)
234             {
235                 string result = response.Content.ReadAsStringAsync().Result;
236                 return result;
237             }
238             return null;
239         }
240 
241         /// <summary>
242         /// 删除API
243         /// </summary>
244         /// <param name="url"></param>
245         /// <returns></returns>
246         public static bool KongDeleteResponse(string url)
247         {
248             if (url.StartsWith("https"))
249                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
250 
251             var httpClient = new HttpClient();
252             HttpResponseMessage response = httpClient.DeleteAsync(url).Result;
253             return response.IsSuccessStatusCode;
254         }
255 
256         /// <summary>
257         /// 修改或者更改API        
258         /// </summary>
259         /// <param name="url"></param>
260         /// <param name="postData"></param>
261         /// <returns></returns>
262         public static string KongPutResponse(string url, string postData)
263         {
264             if (url.StartsWith("https"))
265                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
266 
267             HttpContent httpContent = new StringContent(postData);
268             httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded") { CharSet = "utf-8" };
269 
270             var httpClient = new HttpClient();
271             HttpResponseMessage response = httpClient.PutAsync(url, httpContent).Result;
272             if (response.IsSuccessStatusCode)
273             {
274                 string result = response.Content.ReadAsStringAsync().Result;
275                 return result;
276             }
277             return null;
278         }
279 
280         /// <summary>
281         /// 检索API
282         /// </summary>
283         /// <param name="url"></param>
284         /// <returns></returns>
285         public static string KongSerchResponse(string url)
286         {
287             if (url.StartsWith("https"))
288                 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
289 
290             var httpClient = new HttpClient();
291             HttpResponseMessage response = httpClient.GetAsync(url).Result;
292             if (response.IsSuccessStatusCode)
293             {
294                 string result = response.Content.ReadAsStringAsync().Result;
295                 return result;
296             }
297             return null;
298         }
299     }
300 }

 

posted @ 2017-12-11 09:10  骚年丶勿忘初心。  阅读(31793)  评论(0编辑  收藏  举报