发送HTTP Gzip压缩请求

一、内容压缩

public static byte[] WriteGzip(string data)
        {
            byte[] buffer = Encoding.UTF8.GetBytes(data);
            using (MemoryStream ms = new MemoryStream())
            {
                GZipStream gzipStream = new GZipStream(ms, CompressionMode.Compress);
                gzipStream.Write(buffer, 0, buffer.Length);
                gzipStream.Close();
                return ms.ToArray();
            }
        }

二、发送请求

class HttpData
    {
        public bool Success { get; set; } = true;
        public string Result { get; set; }
    }
public static async Task<HttpData> PostAsync(string url, int timeout,byte[] data)
        {
            var httpData = new HttpData();

            HttpWebRequest request = null;
            HttpWebResponse response = null;
            try
            {
                request = (HttpWebRequest)WebRequest.Create(url);

                request.Method = "POST";
                request.ContentType = "text/plain";
                request.ContentLength=data.Length;
                request.Timeout = timeout;
                request.KeepAlive = false;

                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                response = (HttpWebResponse)await request.GetResponseAsync();

                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    httpData.Result = reader.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                httpData.Success = false;
                httpData.Result = ex.Message;
            }
            finally
            {
                if (response != null) response.Close();
                if (request != null) request.Abort();
            }
            return httpData;
        }
posted @ 2020-10-29 21:21  ljsoftware  阅读(627)  评论(0)    收藏  举报