zoukankan      html  css  js  c++  java
  • t

    using ZhiHe.Entity.Corpize;
    using System;
    using System.IO;
    using System.IO.Compression;
    using System.Net;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    using ZhiHe.Entity.BaiDu;
    using ZhiHe.Utils;

    namespace ZhiHe.Common
    {
        public static class HtmlHelper
        {
            private static readonly TimeSpan requestTimeout = new TimeSpan(0, 0, 20);

            #region HttpClient 实现

            #region get

            /// <summary>
            /// get 常规
            /// </summary>
            public static async ValueTask<string> GetHtmlAsync(HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    var request = new HttpRequestMessage(HttpMethod.Get, string.Empty);
                    client.Timeout = requestTimeout;
                    var response = await client.SendAsync(request);
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// get 带url,超时
            /// </summary>
            public static async ValueTask<string> GetHtmlAsync(string url, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    var request = new HttpRequestMessage(HttpMethod.Get, url);
                    client.Timeout = timeout;
                    var response = await client.SendAsync(request);
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// get 带url,ua,超时
            /// </summary>
            public static async ValueTask<string> GetHtmlAsync(string url, string ua, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    var request = new HttpRequestMessage(HttpMethod.Get, url);
                    client.Timeout = timeout;
                    request.Headers.Add("User-Agent", ua);
                    var response = await client.SendAsync(request);
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }
            #endregion

            #region post

            /// <summary>
            /// post
            /// </summary>
            public static async ValueTask<string> PostHtmlAsync(string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;

                    var response = await client.PostAsync(string.Empty, new StringContent(strPostData));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// post 带url
            /// </summary>
            public static async ValueTask<string> PostHtmlAsync(string url, string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    var response = await client.PostAsync(url, new StringContent(strPostData));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// post 带ua
            /// </summary>
            public static async ValueTask<string> PostHtmlUaAsync(string ua, string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    client.DefaultRequestHeaders.Add("User-Agent", ua);
                    var response = await client.PostAsync(string.Empty, new StringContent(strPostData));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// post 百度
            /// </summary>
            public static async ValueTask<MobadsResponse> PostHtmlByBaiDuAsync(byte[] buffer, TimeSpan timeout, HttpClient client)
            {
                try
                {
                    client.Timeout = timeout;
                    var response = await client.PostAsync(string.Empty, new ByteArrayContent(buffer));

                    return ProtoBuf.Serializer.Deserialize<MobadsResponse>(await response.Content.ReadAsStreamAsync());
                }
                catch
                {
                    return null;
                }
            }

            /// <summary>
            /// post connettype为application/json
            /// </summary>
            public static async ValueTask<string> PostHtmlContentTypeJsonAsync(string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    var response = await client.PostAsync(string.Empty, new StringContent(strPostData, Encoding.UTF8, "application/json"));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// post connettype为text/plain
            /// </summary>
            public static async ValueTask<string> PostHtmlContentTypeTextAsync(string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    var response = await client.PostAsync(string.Empty, new StringContent(strPostData, Encoding.UTF8, "text/plain"));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// 玩咖专用请求方法
            /// </summary>
            public static async ValueTask<string> PostHtmlWanKaAsync(string ua, string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    client.DefaultRequestHeaders.Add("User-Agent", ua);
                    HttpContent content = new ByteArrayContent(Tool.GzipCompress(Encoding.UTF8.GetBytes(strPostData)));
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json")
                    {
                        CharSet = "utf-8"
                    };
                    var response = await client.PostAsync(string.Empty, content);
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// post 极光
            /// </summary>
            public static async ValueTask<AdResponse> PostHtmlByJiGuangAsync(byte[] buffer, TimeSpan timeout, HttpClient client)
            {
                try
                {
                    client.Timeout = timeout;
                    var response = await client.PostAsync(string.Empty, new ByteArrayContent(buffer));

                    return ProtoBuf.Serializer.Deserialize<AdResponse>(await response.Content.ReadAsStreamAsync());
                }
                catch
                {
                    return null;
                }
            }

            /// <summary>
            /// 京东专用
            /// </summary>
            public static async ValueTask<Entity.Request.JingDongYingXiao.BidResponse> PostHtmlByJingDongAsync(byte[] buffer, TimeSpan timeout, HttpClient client)
            {
                try
                {
                    client.Timeout = timeout;
                    HttpContent content = new ByteArrayContent(buffer);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                    var response = await client.PostAsync(string.Empty, content);
                    return ProtoBuf.Serializer.Deserialize<Entity.Request.JingDongYingXiao.BidResponse>(await response.Content.ReadAsStreamAsync());
                }
                catch
                {
                    return null;
                }
            }

            /// <summary>
            /// application/json且不包含charset=utf-8
            /// </summary>
            public static async ValueTask<string> PostHtmlContentTypeJsonNoCharsetAsync(string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    HttpContent content = new StringContent(strPostData);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var response = await client.PostAsync(string.Empty, content);
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            public static async ValueTask<string> PostHtmlContentTypeFormAsync(string strPostData, TimeSpan timeout, HttpClient client)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    var response = await client.PostAsync(string.Empty, new StringContent(strPostData, Encoding.UTF8, "application/x-www-form-urlencoded"));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }

            /// <summary>
            /// post 带X-CAD-S2S-SIGNITURE  ---省广畅思API接口专用
            /// </summary>
            /// <param name="strPostData"></param>
            /// <param name="timeout"></param>
            /// <param name="client"></param>
            /// <param name="signiture"></param>
            /// <returns></returns>
            public static async ValueTask<string> PostHtmlSignitureAsync(string strPostData, TimeSpan timeout, HttpClient client, string signiture)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    client.DefaultRequestHeaders.Add("X-CAD-S2S-SIGNITURE", signiture);
                    var response = await client.PostAsync(string.Empty, new StringContent(strPostData));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }


            public static async ValueTask<string> PostHtmlAsyncBoBoMaterial(string url, string strPostData, TimeSpan timeout, HttpClient client, string dspId, string timeSpan, string token)
            {
                string strWebData = string.Empty;
                try
                {
                    client.Timeout = timeout;
                    client.DefaultRequestHeaders.Add("dsp_id", dspId);
                    client.DefaultRequestHeaders.Add("timestamp", timeSpan);
                    client.DefaultRequestHeaders.Add("token", token);
                    var response = await client.PostAsync(url, new StringContent(strPostData));
                    if (response.Content.Headers.ContentEncoding == null || response.Content.Headers.ContentEncoding.Count == 0)
                        strWebData = await response.Content.ReadAsStringAsync();
                    else
                    {
                        if (response.Content.Headers.ContentEncoding.Contains("gzip"))
                        {
                            using (StreamReader reader = new StreamReader(new GZipStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else if (response.Content.Headers.ContentEncoding.Contains("deflate"))
                        {
                            using (StreamReader reader = new StreamReader(new DeflateStream(await response.Content.ReadAsStreamAsync(), CompressionMode.Decompress), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();

                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
            }
            #endregion

            #endregion

            #region HttpWebRequest 实现, core环境下高并发端口占用太多,导致503错误

            #region Get
            public static async ValueTask<string> GetHtmlIsGzip(string url)
            {
                HttpWebRequest wReq = null;
                string strWebData = string.Empty;
                try
                {
                    wReq = (HttpWebRequest)WebRequest.Create(@url);
                    wReq.Proxy = null;
                    wReq.Accept = "*/*";
                    wReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
                    wReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
                    wReq.Headers.Add("Accept-Encoding", "gzip,deflate");
                    wReq.Method = "GET";
                    wReq.Timeout = 120000;
                    wReq.ServicePoint.ConnectionLimit = int.MaxValue;
                    wReq.KeepAlive = false;
                    wReq.AllowWriteStreamBuffering = false;
                    using (HttpWebResponse wResp = (HttpWebResponse)await wReq.GetResponseAsync())
                    {
                        if (string.IsNullOrWhiteSpace(wResp.ContentEncoding))
                        {
                            using (StreamReader reader = new StreamReader(wResp.GetResponseStream(), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else
                        {
                            if (wResp.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new GZipStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();
                            }
                            else if (wResp.ContentEncoding.Equals("deflate", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new DeflateStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();

                            }
                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
                finally
                {
                    if (wReq != null)
                        wReq.Abort();
                }
            }

            public static async ValueTask<string> GetHtmlIsGzip(string url, string ua)
            {
                HttpWebRequest wReq = null;
                string strWebData = string.Empty;
                try
                {
                    wReq = (HttpWebRequest)WebRequest.Create(@url);
                    wReq.Proxy = null;
                    wReq.Accept = "*/*";
                    wReq.UserAgent = ua;
                    wReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");
                    wReq.Headers.Add("Accept-Encoding", "gzip,deflate");
                    wReq.Method = "GET";
                    wReq.Timeout = 120000;
                    wReq.ServicePoint.ConnectionLimit = int.MaxValue;
                    wReq.KeepAlive = false;
                    wReq.AllowWriteStreamBuffering = false;
                    using (HttpWebResponse wResp = (HttpWebResponse)await wReq.GetResponseAsync())
                    {
                        if (string.IsNullOrWhiteSpace(wResp.ContentEncoding))
                        {
                            using (StreamReader reader = new StreamReader(wResp.GetResponseStream(), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else
                        {
                            if (wResp.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new GZipStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();
                            }
                            else if (wResp.ContentEncoding.Equals("deflate", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new DeflateStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();

                            }
                        }
                    }
                    return strWebData;
                }
                catch
                {
                    return strWebData;
                }
                finally
                {
                    if (wReq != null)
                        wReq.Abort();
                }
            }

            #endregion

            #region Post
            public static async ValueTask<string> PostHtmlIsGzip(string url, string strPostdata)
            {
                HttpWebRequest wReq = null;
                try
                {
                    string strWebData = string.Empty;
                    wReq = (HttpWebRequest)WebRequest.Create(@url);
                    wReq.Proxy = null;
                    wReq.ContentType = "application/json";
                    wReq.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
                    wReq.Headers.Add("Accept-Encoding", "gzip,deflate");
                    wReq.ServicePoint.Expect100Continue = false;
                    wReq.ServicePoint.UseNagleAlgorithm = false;
                    wReq.ServicePoint.ConnectionLimit = int.MaxValue;
                    wReq.AllowWriteStreamBuffering = false;
                    wReq.Method = "POST";
                    wReq.Timeout = 50000;
                    wReq.KeepAlive = false;
                    byte[] buffer = Encoding.UTF8.GetBytes(strPostdata);
                    wReq.ContentLength = buffer.Length;
                    wReq.GetRequestStream().Write(buffer, 0, buffer.Length);
                    using (HttpWebResponse wResp = (HttpWebResponse)await wReq.GetResponseAsync())
                    {
                        if (string.IsNullOrWhiteSpace(wResp.ContentEncoding))
                        {
                            using (StreamReader reader = new StreamReader(wResp.GetResponseStream(), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else
                        {
                            if (wResp.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new GZipStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();
                            }
                            else if (wResp.ContentEncoding.Equals("deflate", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new DeflateStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();
                            }
                        }
                    }
                    return strWebData;
                }
                catch (Exception ex)
                {
                    Log.SaveLog("PostHtmlIsGzip", ex.Message + ex.Source + url + strPostdata);
                    return null;
                }
                finally
                {
                    if (wReq != null)
                        wReq.Abort();
                }
            }

            public static async ValueTask<string> PostHtmlIsGzipByStatusCode(string url, string strPostdata)
            {
                HttpWebRequest wReq = null;
                try
                {
                    string strWebData = string.Empty;
                    wReq = (HttpWebRequest)WebRequest.Create(@url);
                    wReq.Proxy = null;
                    wReq.ContentType = "application/json";
                    wReq.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
                    wReq.Headers.Add("Accept-Encoding", "gzip,deflate");
                    wReq.ServicePoint.Expect100Continue = false;
                    wReq.ServicePoint.UseNagleAlgorithm = false;
                    wReq.ServicePoint.ConnectionLimit = int.MaxValue;
                    wReq.AllowWriteStreamBuffering = false;
                    wReq.Method = "POST";
                    wReq.Timeout = 50000;
                    wReq.KeepAlive = false;
                    byte[] buffer = Encoding.UTF8.GetBytes(strPostdata);
                    wReq.ContentLength = buffer.Length;
                    wReq.GetRequestStream().Write(buffer, 0, buffer.Length);
                    using (HttpWebResponse wResp = (HttpWebResponse)await wReq.GetResponseAsync())
                    {
                        if (string.IsNullOrWhiteSpace(wResp.ContentEncoding))
                        {
                            using (StreamReader reader = new StreamReader(wResp.GetResponseStream(), Encoding.UTF8))
                                strWebData = await reader.ReadToEndAsync();
                        }
                        else
                        {
                            if (wResp.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new GZipStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();
                            }
                            else if (wResp.ContentEncoding.Equals("deflate", StringComparison.InvariantCultureIgnoreCase))
                            {
                                using (StreamReader reader = new StreamReader(new DeflateStream(wResp.GetResponseStream(), CompressionMode.Decompress), Encoding.UTF8))
                                    strWebData = await reader.ReadToEndAsync();
                            }
                        }
                    }
                    return strWebData;
                }
                catch (WebException ex)
                {
                    if (((HttpWebResponse)ex.Response).StatusCode != HttpStatusCode.BadRequest)
                        Log.SaveLog("PostHtmlIsGzip", ex.Message + ex.Source + url + strPostdata);
                    return null;
                }
                finally
                {
                    if (wReq != null)
                        wReq.Abort();
                }
            }

            public static async ValueTask<MobadsResponse> PostHtmlByBaiDu(string url, byte[] buffer)
            {
                HttpWebRequest wReq = null;
                try
                {
                    MobadsResponse strWebData = null;
                    wReq = (HttpWebRequest)WebRequest.Create(@url);
                    wReq.Proxy = null;
                    wReq.ContentType = "x-protobuf";
                    wReq.Connection = "KeepAlive";
                    wReq.ServicePoint.Expect100Continue = false;
                    wReq.ServicePoint.ConnectionLimit = int.MaxValue;
                    wReq.AllowWriteStreamBuffering = false;
                    wReq.Method = "POST";
                    wReq.Timeout = 200000;
                    wReq.ContentLength = buffer.Length;
                    wReq.GetRequestStream().Write(buffer, 0, buffer.Length);


                    using (HttpWebResponse wResp = (HttpWebResponse)await wReq.GetResponseAsync())
                    {
                        strWebData = ProtoBuf.Serializer.Deserialize<MobadsResponse>(wResp.GetResponseStream());
                    }
                    return strWebData;
                }
                catch
                {
                    return null;
                }
                finally
                {
                    if (wReq != null)
                        wReq.Abort();
                }
            }

            public static async Task<Entity.Corpize.BidResponse> PostHtmlByCorpize(string url, byte[] buffer)
            {
                HttpWebRequest wReq = null;
                try
                {
                    HttpClient client = new HttpClient();
                    Entity.Corpize.BidResponse strWebData = null;
                    HttpContent content = new ByteArrayContent(buffer);
                    client.BaseAddress = new Uri(url);
                    client.DefaultRequestHeaders.Add("ContentType", "application/octet-stream");
                    client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip,deflate");
                    client.DefaultRequestHeaders.Add("User-Agent", "ZhiHe");
                    client.DefaultRequestHeaders.Connection.Add("keep-alive");
                    client.Timeout = new TimeSpan(0, 0, 20);
                    var response = await client.PostAsync(string.Empty, content);

                    return ProtoBuf.Serializer.Deserialize<Entity.Corpize.BidResponse>(await response.Content.ReadAsStreamAsync());
                    //wReq = (HttpWebRequest)WebRequest.Create(@url);
                    //wReq.Proxy = null;
                    ////wReq.Accept = "application/x-protobuf";
                    //wReq.ContentType = "application/octet-stream";
                    //wReq.Connection = "KeepAlive";
                    //wReq.ServicePoint.Expect100Continue = false;
                    //wReq.ServicePoint.ConnectionLimit = int.MaxValue;
                    //wReq.AllowWriteStreamBuffering = false;
                    //wReq.Method = "POST";
                    //wReq.Timeout = 120000;
                    //wReq.ContentLength = buffer.Length;
                    //wReq.GetRequestStream().Write(buffer, 0, buffer.Length);
                    //using (HttpWebResponse wResp = (HttpWebResponse)wReq.GetResponse())
                    //{
                    //    strWebData = ProtoBuf.Serializer.Deserialize<Corpize.BidResponse>(wResp.GetResponseStream());
                    //}
                    return strWebData;
                }
                catch (Exception ex)
                {
                    return null;
                }
                finally
                {
                    if (wReq != null)
                        wReq.Abort();
                }
            }
            #endregion

            #endregion
        }
    }

  • 相关阅读:
    2018暑假假期周进度报告——第八周
    zf-关于评价器的开关所在的配置文件,与代码如何修改。
    不要点击一个功能就创建一个新的网页,要尽量少的新创建页面(例如:办事指南,点击一个部门创建一个网页,选择具体事项时,又创建一个网页,这样创建的网页太多)
    实现jsp页面显示用户登录信息,利用session保存。
    zf-关于更换页面,的各种问题。
    报错 BeanFactory not initialized or already closed
    Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds
    如果在一个实现类中改变另外一个类中的变量,但是怎么改网页上都没变化的问题。
    如果更新包更新包现场,class文件更新过去,没有改变,及时删掉,照样能进那个模块的问题。
    使用内链接(A a inner join B b on a.xx = b.xx)查询2个表中某一列的相同的字段。
  • 原文地址:https://www.cnblogs.com/mrray/p/10712287.html
Copyright © 2011-2022 走看看