Exemplo n.º 1
0
        // 从响应流中读取响应为实体
        static async Task <T> ReadAsResultAsync <T>(HttpResponseMessage response, Func <string, T> deserializer = null)
        {
            Stream stream = null;

            try
            {
                Encoding encoding = null;
                if (response.Content != null && response.Content.Headers != null && response.Content.Headers.ContentType != null)
                {
                    encoding = Encoding.GetEncoding(response.Content.Headers.ContentType.CharSet);
                }
                stream = await response.Content.ReadAsStreamAsync();

                return(WebHelper.ReadAsResult <T>(stream, encoding, deserializer));
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                if (response != null)
                {
                    response.Dispose();
                }
            }
        }
Exemplo n.º 2
0
        // 从响应流中读取响应为实体
        static T ReadAsResult <T>(HttpWebResponse response, HttpConfiguration configuration)
        {
            Stream stream = null;

            try
            {
                var      conf         = configuration as HttpConfiguration <T>;
                var      deserializer = conf != null ? conf.Deserializer : null;
                Encoding encoding     = configuration.Encoding;
                if (encoding == null)
                {
                    encoding = !string.IsNullOrEmpty(response.CharacterSet) ? Encoding.GetEncoding(response.CharacterSet) : null;
                }
                stream = response.GetResponseStream();
                return(WebHelper.ReadAsResult <T>(stream, encoding, deserializer));
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                if (response != null)
                {
                    response.Close();
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 使用 POST 方式提交请求,需要调用方自行释放响应对象
        /// </summary>
        /// <param name="uri">请求路径</param>
        /// <param name="configuration">HTTP 配置</param>
        public static T Delete <T>(string uri, HttpConfiguration configuration)
        {
            if (configuration == null)
            {
                configuration = new HttpConfiguration <T>();
            }
            configuration.Method = HttpMethod.Delete;

            var conf     = configuration as HttpConfiguration <T>;
            var response = WebHelper.Send(uri, configuration);

            return(WebHelper.ReadAsResult <T>(response, conf));
        }