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