HttpHelpers類普通GET和POST方式,帶Cookie和帶認證驗證模式

來源:互聯網
上載者:User
using System.Collections.Generic;  using System.Linq;  using System.Web;  using System.Text;  using System.Net;  using System.IO;  using System.Security.Cryptography.X509Certificates;  using System.Net.Security;  using System;     /// <summary>  ///HttpHelpers 主要是實現Http方式的Get和Post方式請求  /// </summary>  public class HttpHelpers  {      /// <summary>      /// 構造器實現預設屬性的賦值      /// </summary>      public HttpHelpers()      {                }         #region 所有的屬性         //訪問的頁面地址      private string RequestURl { get; set; }         //預設的編碼      private Encoding encoding { get; set; }         //HttpWebRequest對象用來發起請求      private HttpWebRequest request { get; set; }         //擷取影響流的資料對象      private HttpWebResponse response { get; set; }         //認證檔案X509Certificate objx509 = new X509Certificate(Application.StartupPath + "\\123.cer");      X509Certificate objx509 { get; set; }         //請求方式目前只提供Post和Get方式      private string Method { get; set; }         //Accept屬性      private string Accept { get; set; }         //ContentType屬性      private string ContentType { get; set; }         //UserAgent屬性      private string UserAgent { get; set; }         //Cookie列表      private CookieContainer cookie { get; set; }         //需要返回的資料對象      private string reutrnDate { get; set; }         //Post資料串      private string strPostdata { get; set; }         #endregion         #region 內部方法         //回調驗證認證問題      private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)      {          // 總是接受              return true;      }      private void load()      {          //佈建要求方式為Post          request.Method = "GET";          request.Accept = "text/html, application/xhtml+xml, */*";          request.ContentType = "application/x-www-form-urlencoded";      }         /// <summary>      /// 根據相傳入的資料,得到相應頁面資料      /// </summary>      /// <param name="strPostdata">傳入的資料Post方式,get方式傳NUll或者Null 字元串都可以</param>      /// <returns>string類型的響應資料</returns>      private string GetHttpRequestData()      {          try         {              //是否要添加認證驗證              if (objx509 != null)              {                  //這一句一定要寫在建立串連的前面。使用回調的方法進行認證驗證。                  ServicePointManager.ServerCertificateValidationCallback =                      new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);              }                 //建立request對象              request = (HttpWebRequest)WebRequest.Create(RequestURl);                 //是否要添加認證驗證              if (objx509 != null)                  request.ClientCertificates.Add(objx509);                 //是否帶有Cookie值              if (cookie != null)                  request.CookieContainer = cookie;                 //當為post提交是需要填充資料              if (Method.Trim().ToLower() == "post")              {                  byte[] buffer = encoding.GetBytes(strPostdata);                  request.ContentLength = buffer.Length;                  request.GetRequestStream().Write(buffer, 0, buffer.Length);              }                 //得到請求的response              using (response = (HttpWebResponse)request.GetResponse())              {                  //從這裡開始我們要無視編碼了                  if (encoding == null)                      GetEonding();                     //開始讀取流並設定編碼方式                  using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))                  {                      //從當前開始讀取整個流資料,預設為0所以讀取的是全部,並返回資料                      reutrnDate = reader.ReadToEnd().ToString().Trim();                  }              }          }          catch (Exception)          {              //這裡是在發生異常時返回的錯誤資訊              reutrnDate = "String Error";          }          return reutrnDate;      }         /// <summary>      /// 得到response對象的編碼類別型      /// </summary>      private void GetEonding()      {          if (response.CharacterSet.Trim() != "")              encoding = System.Text.Encoding.GetEncoding(response.CharacterSet.Trim());          else             encoding = System.Text.Encoding.UTF8;      }         #endregion         #region 公開方法         /// <summary>      /// 只設定一些簡單參數的方式      /// </summary>      /// <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)      {          RequestURl = _url;          Method = _Method;          encoding = _encoding;          Accept = _Accept;          ContentType = _ContentType;          UserAgent = _UserAgent;          cookie = _cookie;          objx509 = _objx509;          return GetHttpRequestData();      }         /// <summary>      /// 只設定一些簡單參數的方式      /// </summary>      /// <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 _strPostdata, string _Method, Encoding _encoding)      {          RequestURl = _url;          strPostdata = _strPostdata;          Method = _Method;          encoding = _encoding;          return GetHttpRequestData();      }         //下面大家自己可以多寫幾種常用的,呵呵         #endregion     } 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.