示例#1
0
        /// <summary>
        /// Post请求返回实体
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="postData">请求数据</param>
        /// <returns>实体</returns>
        public static T PostResponse <T>(string url, object obj)
        {
            HttpClient httpClient = new HttpClient(new HttpClientHandler()
            {
                AutomaticDecompression = DecompressionMethods.GZip
            });
            HttpResponseMessage response = null;

            try
            {
                //using (HttpClient httpClient = new HttpClient())
                //{
                httpClient.MaxResponseContentBufferSize = 256000;
                httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36");
                httpClient.CancelPendingRequests();
                httpClient.DefaultRequestHeaders.Clear();
                string      postData    = JsonConvertTool.SerializeObject(obj);
                HttpContent httpContent = new StringContent(postData);

                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                T result = default(T);
                Task <HttpResponseMessage> taskResponse = httpClient.PostAsync(url, httpContent);
                taskResponse.Wait();
                response = taskResponse.Result;
                //using (HttpResponseMessage response = taskResponse.Result)
                //{
                //HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
                if (response.IsSuccessStatusCode)
                {
                    //Task<string> t = response.Content.ReadAsStringAsync();
                    //t.Wait();
                    //string s = t.Result;
                    Task <System.IO.Stream> taskStream = response.Content.ReadAsStreamAsync();
                    taskStream.Wait();
                    System.IO.Stream       dataStream = taskStream.Result;
                    System.IO.StreamReader reader     = new System.IO.StreamReader(dataStream);
                    string s = reader.ReadToEnd();

                    result = JsonConvertTool.DeserializeObject <T>(s);
                }
                //}
                return(result);
                //}
            }
            catch (Exception ex)
            {
                LogHelper.ErrorFormat("url:{0},Obj:{1}", url, JsonConvertTool.SerializeObject(obj));
                return(default(T));
            }
            finally
            {
                if (response != null)
                {
                    response.Dispose();
                }
                if (httpClient != null)
                {
                    httpClient.Dispose();
                }
            }
        }