C# Http 中的Post异步调用

        /// <summary>
        /// 异步调用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        protected virtual async Task<T> PostHttpRequestWithJsonFormat<T>(string url, object jObject) where T : BaseResponse
  , new()
        {
            try
            {
               
                string inputJson = JsonConvert.SerializeObject(jObject);
                // WriteLog("url = " + url + "inputJson = " + inputJson);
                var httpClient = new HttpClient();
                //代理网络多了一个文件头 取消掉
                httpClient.DefaultRequestHeaders.ExpectContinue = false;
                httpClient.Timeout = TimeSpan.FromSeconds(120);
                var httpContent = new StringContent(inputJson);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                httpClient.DefaultRequestHeaders.Add("User-Agent", "windows");
                var httpResponseMessage = await httpClient.PostAsync(url, httpContent);
                httpResponseMessage.Version = HttpVersion.Version10;
                if (httpResponseMessage.Content == null)
                {
                   
                    return null;
                }
                string rcv = await httpResponseMessage.Content.ReadAsStringAsync();
                var baseRet = JsonConvert.DeserializeObject<BaseResponse>(rcv);
                if (baseRet != null)
                {
                    if (baseRet.IsSuccess())
                    {
                        if (baseRet.data == null)
                        {
                            return new T()
                            {
                                code = baseRet.code,
                                msg = baseRet.msg,

                            };
                        }

                        else
                            return new T()
                            {
                                code = baseRet.code,
                                msg = baseRet.msg,
                                data = baseRet.data
                            };
                    }
                    else
                    {
                        return new T() { code = baseRet.code, msg = baseRet.msg };
                    }
                }
                else
                {
                    return new T() { code = "-1", msg = rcv };
                }
            }
            catch (Exception ex)
            {
              //  WriteLog("调用接口异常 " +ex.Message);
                return new T() { code = "-1", msg = ex.Message };
            }


        }

 

posted @ 2023-07-04 16:38  NangFah  阅读(474)  评论(0)    收藏  举报