|
8鱼币
/// 类说明:HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式 |
/// </summary>using System; |
using System.Collections.Generic; |
using System.Security.Cryptography.X509Certificates; |
using System.Net.Security; |
///HttpHelpers 主要是实现Http方式的Get和Post方式请求 |
request.Accept = "text/html, application/xhtml+xml, */*"; |
request.ContentType = "application/x-www-form-urlencoded"; |
private string RequestURl { get; set; } |
private Encoding encoding { get; set; } |
private HttpWebRequest request { get; set; } |
private HttpWebResponse response { get; set; } |
//证书文件X509Certificate objx509 = new X509Certificate(Application.StartupPath + "\\123.cer"); |
X509Certificate objx509 { get; set; } |
private string Method { get; set; } |
private string Accept { get; set; } |
private string ContentType { get; set; } |
private string UserAgent { get; set; } |
private CookieContainer cookie { get; set; } |
private string reutrnDate { get; set; } |
private string strPostdata { get; set; } |
private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) |
/// <param name="strPostdata">传入的数据Post方式,get方式传NUll或者空字符串都可以</param> |
/// <returns>string类型的响应数据</returns> |
private string GetHttpRequestData() |
//这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。 |
ServicePointManager.ServerCertificateValidationCallback = |
new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); |
request = (HttpWebRequest)WebRequest.Create(RequestURl); |
request.ClientCertificates.Add(objx509); |
request.CookieContainer = cookie; |
if (Method.Trim().ToLower() == "post") |
byte[] buffer = encoding.GetBytes(strPostdata); |
request.ContentLength = buffer.Length; |
request.GetRequestStream().Write(buffer, 0, buffer.Length); |
using (response = (HttpWebResponse)request.GetResponse()) |
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) |
//从当前开始读取整个流数据,默认为0所以读取的是全部,并返回数据 |
reutrnDate = reader.ReadToEnd().ToString().Trim(); |
reutrnDate = "String Error"; |
private void GetEonding() |
if (response.CharacterSet.Trim() != "") |
encoding = System.Text.Encoding.GetEncoding(response.CharacterSet.Trim()); |
encoding = System.Text.Encoding.UTF8; |
/// <param name="_url">URl地址</param> |
/// <param name="_strPostdata">Post请求方式时传入的数据</param> |
/// <param name="_Method">请求方式GET或者POST可以为空默认为GET</param> |
/// <param name="_encoding">编码方式可以为空默认为UTF-8</param> |
/// <param name="_Accept">Accept属性</param> |
/// <param name="_ContentType">ContentType属性</param |
/// <param name="_UserAgent">UserAgent属性</param |
/// <param name="_cookie">CookieContainer列表</param |
/// <param name="_objx509">X509Certificate证书对象</param |
/// <returns>请求所得到的数据</returns> |
public string GetString_null(string _url, string _strPostdata, string _Method, Encoding _encoding, string _Accept, |
string _ContentType, string _UserAgent, CookieContainer _cookie, X509Certificate _objx509) |
ContentType = _ContentType; |
return GetHttpRequestData(); |
/// <param name="_url">URl地址</param> |
/// <param name="_strPostdata">Post请求方式时传入的数据</param> |
/// <param name="_Method">请求方式GET或者POST可以为空默认为GET</param> |
/// <param name="_encoding">编码方式可以为空默认为UTF-8</param> |
/// <returns>请求所得到的数据</returns> |
public string GetString_type(string _url, string _Method, Encoding _encoding) |
return GetHttpRequestData(); |
|
|