110,538
社区成员
发帖
与我相关
我的任务
分享
namespace QQ
{
public class HttpHelper
{
private readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
public HttpWebResponse HttpGetRequest(string url, string referer, int? timeout, CookieCollection cookies)
{
HttpWebRequest request = null;
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = DefaultUserAgent;
request.CookieContainer = new System.Net.CookieContainer();
if (!string.IsNullOrEmpty(referer))
request.Referer = referer;
if (timeout.HasValue)
request.Timeout = timeout.Value;
else
request.Timeout = 25000;
if (cookies != null)
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
}
return request.GetResponse() as HttpWebResponse;
}
public HttpWebResponse HttpPostRequest(string url, string referer, string postData, CookieCollection cookies, string contentType = null)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = new System.Net.CookieContainer();
request.Timeout = 65000;
UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] data = encoding.GetBytes(postData);
request.Method = "POST";
if (!string.IsNullOrEmpty(contentType))
request.ContentType = contentType;
else
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.KeepAlive = true;
if(!string.IsNullOrEmpty(referer))
request.Referer = referer;
if (cookies != null)
request.CookieContainer.Add(cookies);
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
return request.GetResponse() as HttpWebResponse;
}
private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
}
}
public string CretRequest()
{
Uri uri = new Uri("https://localhost");
HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
//验证服务器证书回调自动验证 ****关键****
ServicePointManager.ServerCertificateValidationCallback = CheckValidationResult;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(stream);
return streamReader.ReadToEnd();
}
/// <summary>
/// 请求响应时SSL证书验证
/// </summary>
/// <param name="sender"></param>
/// <param name="certificate"></param>
/// <param name="chain"></param>
/// <param name="errors"></param>
/// <returns></returns>
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ // 总是接受
return true;
}