.NET Http请求方法

**

HttpHelpers Http请求方法 类

**

 public class HttpHelpers
    {
        /// <summary>
        /// Post请求
        /// </summary>
        /// <param name="url">链接地址</param>
        /// <param name="jsonStr">数据</param>
        /// <param name="timeout">超时时间(秒)</param>
        /// <returns></returns>
        public static async Task<string> PostAsync(string url, string jsonStr = "", IList<RequestHeader> headers = null, int timeout = 20)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    if (headers != null && headers.Any())
                    {
                        foreach (var item in headers)
                        {
                            client.DefaultRequestHeaders.Add(item.Name, item.Value);
                        }
                    }
                    client.Timeout = new TimeSpan(0, 0, timeout);
                    var content = new StringContent(jsonStr, Encoding.UTF8);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var res = await client.PostAsync(url, content);
                    return await res.Content.ReadAsStringAsync();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public static async Task<string> PostAsync(string url, object reqObj, IList<RequestHeader> headers = null, int timeout = 20)
        {
            return await PostAsync(url, JsonConvert.SerializeObject(reqObj ?? string.Empty), headers, timeout);
        }



        /// <summary>
        /// Post请求
        /// </summary>
        /// <param name="url">链接地址</param>
        /// <param name="jsonStr">数据</param>
        /// <param name="timeout">超时时间(毫秒)</param>
        /// <returns></returns>
        public static string Post(string url, string jsonStr = "", int timeout = 5000, int type = 0)
        {
            try
            {
                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
                Encoding encoding = Encoding.UTF8;
                byte[] bs = Encoding.UTF8.GetBytes(jsonStr);
                string responseData = String.Empty;
                req.Method = "POST";

                req.ContentType = type == 0 ? "application/json; charset=utf-8" : "application/x-www-form-urlencoded";
                req.ContentLength = bs.Length;
                req.Timeout = timeout;

                using (Stream reqStream = req.GetRequestStream())
                {
                    reqStream.Write(bs, 0, bs.Length);
                    reqStream.Close();
                }

                using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
                {
                    using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
                    {
                        responseData = reader.ReadToEnd().ToString();
                    }
                    return responseData;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// POST同步请求方法
        /// </summary>
        /// <param name="url">请求的URL</param>
        /// <param name="strJson">请求的POST JOSN值</param>
        /// <param name="timeout">默认30S</param>
        /// <returns></returns>

        public static string HttpPost(string url, string strJson, int timeout = 30000)
        {
            return HttpPost(url, strJson, null, timeout);
        }


        /// <summary>
        /// POST同步请求方法
        /// </summary>
        /// <param name="url">请求的URL</param>
        /// <param name="strJson">请求的POST JOSN值</param>
        /// <param name="timeout">默认30S</param>
        /// <returns></returns>
        public static string HttpPost(string url, string strJson, IList<RequestHeader> headers, int timeout = 30000)
        {
            try
            {
                HttpClient client = new HttpClient();
                if (headers != null && headers.Any())
                {
                    foreach (var item in headers)
                    {
                        client.DefaultRequestHeaders.Add(item.Name, item.Value);
                    }
                }
                HttpContent content = new StringContent(strJson);
                content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                Task<HttpResponseMessage> res = client.PostAsync(url, content);
                if (res.Result.StatusCode == HttpStatusCode.OK)
                {
                    string str = res.Result.Content.ReadAsStringAsync().Result;
                    return str;
                }
                else
                    throw new Exception(res.Result.Content.ReadAsStringAsync().Result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        /// <summary>
        /// Get请求
        /// </summary>
        /// <param name="url">地址</param>
        /// <param name="timeout">超时时间(秒)</param>
        /// <returns></returns>
        public static async Task<string> GetAsync(string url, int timeout = 5)
        {
            try
            {
                var responseMessage = new HttpResponseMessage();
                using (var client = new HttpClient())
                {
                    client.Timeout = new TimeSpan(0, 0, timeout);
                    responseMessage = await client.GetAsync(url);
                }
                return await responseMessage.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Get请求
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string Get(string url)
        {
            return Get(url, null);
        }

        /// <summary>
        /// Get请求
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string Get(string url, IList<RequestHeader> headers)
        {
            string result = "";
            try
            {
                var httpclient = new HttpClient();
                if (headers != null && headers.Any())
                {
                    foreach (var item in headers)
                    {
                        httpclient.DefaultRequestHeaders.Add(item.Name, item.Value);
                    }
                }

                var response = httpclient.GetAsync(url).Result;
                if (response.IsSuccessStatusCode)
                {
                    Stream myResponseStream = response.Content.ReadAsStreamAsync().Result;
                    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                    result = myStreamReader.ReadToEnd();
                    myStreamReader.Close();
                    myResponseStream.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return result;
        }

        public class RequestHeader
        {
            public string Name { get; set; }
            public string Value { get; set; }
        }

    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值