HttpClient超时timeout设置


之前给小伙伴的一个HttpHpler类,主要是post获取一些数据。可能是接口的一些问题,有时候超时返回空,但是默认timeout时间又太长了。小伙伴是一个硬件相关的项目,等不了这么久,所有想自定义一个短一点的timeout时间,网上找了一些方法,照着试了下,好多都不好用。最后发现HttpClient类中直接就有Timeout属性,自己开了个接口试了下,可以满足需求,记录一下。直接上代码。

  public static string HttpPostRequestAsync4Json(string Url, string strBody)
        {
            string result = "";

            try
            {
         
                using (HttpClient http = new HttpClient())
                {
                    http.Timeout = new TimeSpan(0,0,0,0,500);//500ms未收到回复抛出异常,return Empty
                    http.DefaultRequestHeaders.Add("User-Agent", @"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)");
                    http.DefaultRequestHeaders.Add("Accept", @"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");

                    HttpResponseMessage message = null;
                    using (Stream dataStream = new MemoryStream(Encoding.UTF8.GetBytes(strBody) ?? new byte[0]))
                    {
                        using (HttpContent content = new StreamContent(dataStream))
                        {
                            content.Headers.Add("Content-Type", "application/json");
                            var task = http.PostAsync(Url, content);
                            message = task.Result;
                        }
                    }
                    if (message != null && message.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        using (message)
                        {
                            result = message.Content.ReadAsStringAsync().Result;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
               // throw ex;
                Console.WriteLine(ex.Message);
            }
            return result;
        }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM