HttpPostZipHelper
/// <summary>
///
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postData">json请求参数</param>
/// <param name="reqType">请求类型</param>
/// <returns></returns>
public static T PostGZipResponse<T>(string url, string postData, string reqType) where T : class, new()
{
T result = default(T);
if (!(url.Contains("http://") || url.Contains("https://")))
{
url = "http://" + url;
}
byte[] bytes = Encoding.UTF8.GetBytes(postData);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "POST";
req.ContentLength = bytes.Length;
req.ContentType = reqType;
using (Stream stream = req.GetRequestStream())
{
stream.Write(bytes, 0, bytes.Length);
}
string s = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
s = reader.ReadToEnd();
result = JsonConvert.DeserializeObject<T>(s);
}
}
}
else if (response.ContentEncoding.ToLower().Contains("deflate"))
{
using (DeflateStream stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
s = reader.ReadToEnd();
result = JsonConvert.DeserializeObject<T>(s);
}
}
}
else
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
s = reader.ReadToEnd();
result = JsonConvert.DeserializeObject<T>(s);
}
}
}
}
return result;
}