C# HttpClientHelper請求


public class HttpClientHelper
      {
           /// <summary>
           /// get請求
           /// </summary>
           /// <param name="url"></param>
           /// <returns></returns>
           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<T>(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<string> t = response.Content.ReadAsStringAsync();
                  string s = t.Result;
 
                  result = JsonConvert.DeserializeObject<T>(s);
              }
              return result;
          }
 
          /// <summary>
          /// post請求
          /// </summary>
          /// <param name="url"></param>
          /// <param name="postData">post數據</param>
          /// <returns></returns>
          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;
          }
 
          /// <summary>
          /// 發起post請求
          /// </summary>
         /// <typeparam name="T"></typeparam>
          /// <param name="url">url</param>
         /// <param name="postData">post數據</param>
          /// <returns></returns>
          public static T PostResponse<T>(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<string> t = response.Content.ReadAsStringAsync();
                string s = t.Result;
 
                result = JsonConvert.DeserializeObject<T>(s);
             }
           return result;
         }

         /// <summary>
         /// V3接口全部為Xml形式,故有此方法
        /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="url"></param>
         /// <param name="xmlString"></param>
         /// <returns></returns>
         public static T PostXmlResponse<T>(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<string> t = response.Content.ReadAsStringAsync();
                 string s = t.Result;

                 result = XmlDeserialize<T>(s);
             }
             return result;
         }

         /// <summary>
        /// 反序列化Xml
        /// </summary>
         /// <typeparam name="T"></typeparam>
         /// <param name="xmlString"></param>
         /// <returns></returns>
         public static T XmlDeserialize<T>(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);
          }

        }
     }

  

轉載地址:http://www.2cto.com/weixin/201501/367405.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM