217 lines
8.4 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|