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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值