// 从响应流中读取响应为实体 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(); } } }
// 从响应流中读取响应为实体 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(); } } }
/// <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)); }