using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace AllBase.Helper { public class CommonSimRequest { public string Accept { get; set; } = "application/json, text/plain, */*"; public string ContentType { get; set; } = "application/x-www-form-urlencoded"; public string UserAgent { get; set; } = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"; public Encoding Encoding { get; set; } = Encoding.UTF8; public string Request_Get(string url, string referer, Dictionary headers, string cookies) { HttpWebResponse response = null; string responseText = ""; if (headers == null) headers = new Dictionary(); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.KeepAlive = true; request.Accept = Accept; request.UserAgent = UserAgent; request.ContentType = ContentType; foreach (var key in headers.Keys) { request.Headers.Add(key, headers[key]); } request.Referer = referer; request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9"); request.Headers.Set(HttpRequestHeader.Cookie, cookies); response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response; else responseText = "error," + e.Message; } catch (Exception ex) { responseText = "error," + ex.Message; } if (response != null) { if (string.IsNullOrEmpty(responseText)) responseText = ReadResponse(response, this.Encoding); response.Close(); } return responseText; } public string Request_Post(string url, string referer, Dictionary headers, string cookies, string data, bool isSetCommonHeaders = true) { HttpWebResponse response = null; string responseText = ""; if (headers == null) headers = new Dictionary(); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.KeepAlive = true; request.Accept = Accept; request.UserAgent = UserAgent; request.ContentType = ContentType; if (isSetCommonHeaders) { if (!headers.Keys.Contains("Origin")) request.Headers.Add("Origin", @"https://fxg.jinritemai.com/"); } foreach (var key in headers.Keys) { request.Headers.Add(key, headers[key]); } request.Referer = referer; request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); request.Headers.Set(HttpRequestHeader.AcceptLanguage, "en-US,en;q=0.9"); request.Headers.Set(HttpRequestHeader.Cookie, cookies); request.Method = "POST"; request.ServicePoint.Expect100Continue = false; string body = data; byte[] postBytes = Encoding.UTF8.GetBytes(body); request.ContentLength = postBytes.Length; Stream stream = request.GetRequestStream(); stream.Write(postBytes, 0, postBytes.Length); stream.Close(); response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response; else responseText = "error," + e.Message; } catch (Exception ex) { responseText = "error," + ex.Message; } if (response != null) { if (string.IsNullOrEmpty(responseText)) responseText = ReadResponse(response, this.Encoding); response.Close(); } return responseText; } public string Request_PostByBigLength(string url, string referer, Dictionary headers, string cookies, string data, bool AcceptEncoding = true, bool isSetCommonHeaders = true) { HttpWebResponse response = null; string responseText = ""; if (headers == null) headers = new Dictionary(); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.KeepAlive = true; request.Accept = Accept; request.UserAgent = UserAgent; request.UserAgent = AllBase.BaseClass.ChromeUserAgent; request.ContentType = ContentType; if (isSetCommonHeaders) { if (!headers.Keys.Contains("Origin")) request.Headers.Add("Origin", @"https://fxg.jinritemai.com"); } foreach (var key in headers.Keys) { request.Headers.Add(key, headers[key]); } request.Referer = referer; if (AcceptEncoding) request.Headers.Set(HttpRequestHeader.AcceptEncoding, "deflate"); else request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9"); request.Headers.Set(HttpRequestHeader.Cookie, cookies); request.Method = "POST"; request.ServicePoint.Expect100Continue = false; string body = data; byte[] postBytes = Encoding.UTF8.GetBytes(body); request.ContentLength = postBytes.Length; Stream stream = request.GetRequestStream(); stream.Write(postBytes, 0, postBytes.Length); stream.Close(); response = (HttpWebResponse)request.GetResponse(); } catch (WebException e) { if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response; else responseText = "error," + e.Message; } catch (Exception ex) { responseText = "error," + ex.Message; } if (response != null) { if (string.IsNullOrEmpty(responseText)) responseText = ReadResponse(response, this.Encoding); response.Close(); } return responseText; } /// /// 读取返回值 /// /// /// public static string ReadResponse(HttpWebResponse response, Encoding encoding = null) { if (encoding == null) encoding = Encoding.UTF8; using (Stream responseStream = response.GetResponseStream()) { Stream streamToRead = responseStream; if (response.ContentEncoding.ToLower().Contains("gzip")) { streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress); } else if (response.ContentEncoding.ToLower().Contains("deflate")) { streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress); } using (StreamReader streamReader = new StreamReader(streamToRead, encoding)) { return streamReader.ReadToEnd(); } } } } }