Files
KJD/AllBase/Helper/CommonSimRequest.cs
2025-06-29 19:38:31 +08:00

217 lines
8.4 KiB
C#

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<string, string> headers, string cookies)
{
HttpWebResponse response = null;
string responseText = "";
if (headers == null)
headers = new Dictionary<string, string>();
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<string, string> headers, string cookies, string data, bool isSetCommonHeaders = true)
{
HttpWebResponse response = null;
string responseText = "";
if (headers == null)
headers = new Dictionary<string, string>();
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<string, string> headers, string cookies, string data, bool AcceptEncoding = true, bool isSetCommonHeaders = true)
{
HttpWebResponse response = null;
string responseText = "";
if (headers == null)
headers = new Dictionary<string, string>();
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;
}
/// <summary>
/// 读取返回值
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
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();
}
}
}
}
}