架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 33129|回复: 3

[资料] c#之HTTP请求get,post带重试参数

[复制链接]
发表于 2016-3-21 12:39:34 | 显示全部楼层 |阅读模式
  1. public class WebHttp
  2.     {
  3.         /// <summary>
  4.         /// get请求带重试
  5.         /// </summary>
  6.         /// <param name="Url"></param>
  7.         /// <param name="postDataStr"></param>
  8.         /// <param name="sum"></param>
  9.         /// <returns></returns>
  10.         public static string HttpGet(string Url, string postDataStr, int sum)
  11.         {
  12.             string temp=null;
  13.             for (int i = 0; i < sum; i++)
  14.             {
  15.                 if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim()))
  16.                 {
  17.                     temp = HttpGet(Url, postDataStr);
  18.                 }
  19.                 else {
  20.                     break;
  21.                 }
  22.             }
  23.             return temp;
  24.         }
  25.         /// <summary>
  26.         /// post请求带重试
  27.         /// </summary>
  28.         /// <param name="Url"></param>
  29.         /// <param name="postDataStr"></param>
  30.         /// <param name="sum"></param>
  31.         /// <returns></returns>
  32.         public static string HttpPost(string Url, string postDataStr, int sum)
  33.         {
  34.             string temp = null;
  35.             for (int i = 0; i < sum; i++)
  36.             {
  37.                 if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim()))
  38.                 {
  39.                     temp = HttpPost(Url, postDataStr);
  40.                 }
  41.                 else
  42.                 {
  43.                     break;
  44.                 }
  45.             }
  46.             return temp;
  47.         }
  48.         /// <summary>
  49.         /// GET请求与获取结果
  50.         /// </summary>
  51.         public static string HttpGet(string Url, string postDataStr)
  52.         {
  53.             try
  54.             {
  55.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
  56.                 request.Method = "GET";
  57.                 request.ContentType = "text/html;charset=UTF-8";
  58.                 request.Timeout = 10000;
  59.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  60.                 Stream myResponseStream = response.GetResponseStream();
  61.                 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  62.                 string retString = myStreamReader.ReadToEnd();
  63.                 myStreamReader.Close();
  64.                 myResponseStream.Close();
  65.                 return retString;
  66.             }
  67.             catch (Exception ex)
  68.             {
  69.                 return null;
  70.             }
  71.         }
  72.         /// <summary>
  73.         /// POST请求与获取结果
  74.         /// </summary>
  75.         public static string HttpPost(string Url, string postDataStr)
  76.         {
  77.             try
  78.             {
  79.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  80.                 request.Method = "POST";
  81.                 request.Timeout = 6000000;
  82.                 request.ContentType = "application/x-www-form-urlencoded";
  83.                 request.ContentLength = postDataStr.Length;
  84.                 StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII);
  85.                 writer.Write(postDataStr);
  86.                 writer.Flush();
  87.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  88.                 string encoding = response.ContentEncoding;
  89.                 if (encoding == null || encoding.Length < 1)
  90.                 {
  91.                     encoding = "UTF-8"; //默认编码
  92.                 }
  93.                 StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
  94.                 string retString = reader.ReadToEnd();
  95.                 return retString;
  96.             }
  97.             catch (Exception ex)
  98.             {
  99.                 return null;
  100.             }
  101.         }
  102.     }
复制代码






上一篇:linq查询一张表的某几个字段
下一篇:C#获取文件大小
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-3-21 12:46:01 | 显示全部楼层
  1. /// <summary>
  2.         /// HttpWebRequest 通过Post
  3.         /// </summary>
  4.         /// <param name="url">URI</param>
  5.         /// <param name="postData">post数据</param>
  6.         /// <returns></returns>
  7.         public static string PostDataGetHtml(string url, string postData)
  8.         {
  9.             try
  10.             {
  11.                 byte[] data = Encoding.UTF8.GetBytes(postData);

  12.                 Uri uri = new Uri(url);
  13.                 HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;
  14.                 if (req == null)
  15.                 {
  16.                     return "Network error:" + new ArgumentNullException("httpWebRequest").Message;
  17.                 }
  18.                 req.Method = "POST";
  19.                 req.KeepAlive = true;
  20.                 req.ContentType = "application/x-www-form-urlencoded";
  21.                 req.ContentLength = data.Length;
  22.                 req.AllowAutoRedirect = true;

  23.                 Stream outStream = req.GetRequestStream();
  24.                 outStream.Write(data, 0, data.Length);
  25.                 outStream.Close();

  26.                 var res = req.GetResponse() as HttpWebResponse;
  27.                 if (res == null)
  28.                 {
  29.                     return "Network error:" + new ArgumentNullException("HttpWebResponse").Message;
  30.                 }
  31.                 Stream inStream = res.GetResponseStream();
  32.                 var sr = new StreamReader(inStream, Encoding.UTF8);
  33.                 string htmlResult = sr.ReadToEnd();

  34.                 return htmlResult;
  35.             }
  36.             catch (Exception ex)
  37.             {
  38.                 return "网络错误(Network error):" + ex.Message;
  39.             }
  40.         }

  41.         /// <summary>
  42.         /// HttpWebRequest 通过get
  43.         /// </summary>
  44.         /// <param name="url">URI</param>
  45.         /// <returns></returns>
  46.         public static string GetDataGetHtml(string url)
  47.         {
  48.             try
  49.             {
  50.                 HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

  51.                 httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  52.                 httpWebRequest.Method = "GET";
  53.                 //对发送的数据不使用缓存
  54.                 httpWebRequest.AllowWriteStreamBuffering = false;
  55.                 httpWebRequest.Timeout = 300000;
  56.                 httpWebRequest.ServicePoint.Expect100Continue = false;

  57.                 HttpWebResponse webRespon = (HttpWebResponse)httpWebRequest.GetResponse();
  58.                 Stream webStream = webRespon.GetResponseStream();
  59.                 if (webStream == null)
  60.                 {
  61.                     return "网络错误(Network error):" + new ArgumentNullException("webStream");
  62.                 }
  63.                 StreamReader streamReader = new StreamReader(webStream, Encoding.UTF8);
  64.                 string responseContent = streamReader.ReadToEnd();

  65.                 webRespon.Close();
  66.                 streamReader.Close();

  67.                 return responseContent;
  68.             }
  69.             catch (Exception ex)
  70.             {
  71.                 return "网络错误(Network error):" + ex.Message;
  72.             }
  73.         }

  74.         /// <summary>
  75.         /// HttpWebRequest 通过get
  76.         /// </summary>
  77.         /// <param name="url">URI</param>
  78.         /// <returns></returns>
  79.         public static bool GetDataGetHtml(string url, string filePath, ref string mg)
  80.         {
  81.             try
  82.             {
  83.                 HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

  84.                 httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  85.                 httpWebRequest.Method = "GET";
  86.                 //对发送的数据不使用缓存
  87.                 httpWebRequest.AllowWriteStreamBuffering = false;
  88.                 httpWebRequest.Timeout = 300000;
  89.                 httpWebRequest.ServicePoint.Expect100Continue = false;

  90.                 HttpWebResponse webRespon = (HttpWebResponse)httpWebRequest.GetResponse();
  91.                 Stream webStream = webRespon.GetResponseStream();
  92.                 if (webStream == null)
  93.                 {
  94.                     return false;
  95.                 }
  96.                 StreamReader streamReader = new StreamReader(webStream, Encoding.UTF8);
  97.                 string responseContent = streamReader.ReadToEnd();
  98.                 mg = responseContent;
  99.                 webRespon.Close();
  100.                 streamReader.Close();
  101.                 if (responseContent.ToUpper().IndexOf("NULL") > -1)
  102.                 {
  103.                     return false;
  104.                 }
  105.                 else
  106.                 {
  107.                     FileStream fs = new FileStream(filePath, FileMode.Create);
  108.                     var buff = Encoding.UTF8.GetBytes(responseContent);
  109.                     fs.Write(buff, buff.Length, 0);
  110.                     fs.Close();
  111.                     return true;
  112.                 }
  113.             }
  114.             catch (Exception ex)
  115.             {
  116.                 return false;
  117.             }
  118.         }
复制代码


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-9-22 21:42:48 | 显示全部楼层
  1. public class ResponseModel
  2.     {
  3.         private WebHeaderCollection header;
  4.         /// <summary>
  5.         /// 返回的头部信息集合
  6.         /// </summary>
  7.         public WebHeaderCollection Header
  8.         {
  9.             get { return header; }
  10.             set { header = value; }
  11.         }
  12.         private string html;
  13.         /// <summary>
  14.         /// 返回的文本内容
  15.         /// </summary>
  16.         public string Html
  17.         {
  18.             get { return html; }
  19.             set { html = value; }
  20.         }
  21.         private Stream stream;
  22.         /// <summary>
  23.         /// 返回的流内容
  24.         /// </summary>
  25.         public Stream Stream
  26.         {
  27.             get { return stream; }
  28.             set { stream = value; }
  29.         }

  30.     }
  31.     public class HttpHelper
  32.     {
  33.         private string accept = "application/json,text/javascrip{过滤}t,text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  34.         private System.Net.CookieContainer cc = new System.Net.CookieContainer();
  35.         private string contentType = "application/x-www-form-urlencoded";

  36.         private int timeOut = 30000;
  37.         public NameValueCollection Heads = new NameValueCollection();
  38.         private bool AllowAutoRedirect = false;
  39.         bool needReset = false;
  40.         private System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("utf-8");

  41.         public IWebProxy Proxy;
  42.         private string[] userAgents = new string[] { "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0" };

  43.         private string userAgent
  44.         {
  45.             get
  46.             {
  47.                 return this.userAgents[new Random().Next(0, this.userAgents.Length)];
  48.             }
  49.         }


  50.         /// <summary>
  51.         /// 设置下一次请求为自动重定向
  52.         /// </summary>
  53.         /// <param name="value"></param>
  54.         public void SetAllowAutoRedirectOneTime(bool value)
  55.         {
  56.             AllowAutoRedirect = value;
  57.             needReset = true;
  58.         }

  59.         /// <summary>
  60.         /// 网页访问
  61.         /// </summary>
  62.         /// <param name="url">请求地址</param>
  63.         /// <param name="isPost">是否Post</param>
  64.         /// <param name="postData">Post数据内容</param>
  65.         /// <param name="retType">返回类型0为文本,1为Stream</param>
  66.         /// <param name="cookieContainer">cookie</param>
  67.         /// <param name="refurl">Referer</param>
  68.         /// <param name="_contentType">contentType</param>
  69.         /// <param name="headers">请求头</param>
  70.         /// <returns></returns>
  71.         public ResponseModel HttpVisit(string url, bool isPost = false, string postData = null, int retType = 0, System.Net.CookieContainer cookieContainer = null, string refurl = null, string _contentType = null, NameValueCollection headers = null)
  72.         {
  73.             if (cookieContainer == null)
  74.             {
  75.                 cookieContainer = this.cc;
  76.             }

  77.             if (!isPost)
  78.             {
  79.                 return GetHtml(url, refurl, cookieContainer, _contentType, headers, retType);
  80.             }


  81.             ResponseModel model = new ResponseModel();

  82.             ServicePointManager.Expect100Continue = true;

  83.             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

  84.             HttpWebRequest request = null;
  85.             HttpWebResponse response = null;
  86.             try
  87.             {
  88.                 byte[] bytes = System.Text.Encoding.Default.GetBytes(postData);
  89.                 request = (HttpWebRequest)WebRequest.Create(url);
  90.                 if (this.Proxy != null) request.Proxy = this.Proxy;
  91.                 request.CookieContainer = cookieContainer;
  92.                 request.Timeout = timeOut;
  93.                 if (string.IsNullOrEmpty(_contentType))
  94.                 {
  95.                     request.ContentType = this.contentType;
  96.                 }
  97.                 else
  98.                 {
  99.                     request.ContentType = _contentType;
  100.                 }

  101.                 if (string.IsNullOrEmpty(refurl))
  102.                 {
  103.                     request.Referer = url;
  104.                 }
  105.                 else
  106.                 {
  107.                     request.Referer = refurl;
  108.                 }


  109.                 request.AllowAutoRedirect = AllowAutoRedirect;
  110.                 request.Accept = this.accept;
  111.                 request.UserAgent = this.userAgent;

  112.                 if (headers != null)
  113.                 {
  114.                     request.Headers.Add(Heads);
  115.                     request.Headers.Add(headers);
  116.                 }
  117.                 else
  118.                 {
  119.                     request.Headers.Add(Heads);
  120.                 }


  121.                 request.Method = isPost ? "POST" : "GET";
  122.                 request.ContentLength = bytes.Length;


  123.                 Stream requestStream = request.GetRequestStream();
  124.                 requestStream.Write(bytes, 0, bytes.Length);
  125.                 requestStream.Close();


  126.                 if (retType == 1)
  127.                 {
  128.                     response = (HttpWebResponse)request.GetResponse();

  129.                     model.Header = response.Headers;

  130.                     Stream responseStream = response.GetResponseStream();

  131.                     if (response.Cookies.Count > 0)
  132.                     {
  133.                         this.cc.Add(response.Cookies);
  134.                     }

  135.                     model.Stream = responseStream;
  136.                     return model;

  137.                 }


  138.                 string str = string.Empty;
  139.                 response = (HttpWebResponse)request.GetResponse();

  140.                 model.Header = response.Headers;

  141.                 string encoding = "utf-8";

  142.                 if (!string.IsNullOrEmpty(response.CharacterSet))
  143.                 {
  144.                     encoding = response.CharacterSet.ToLower();
  145.                 }
  146.                 else
  147.                 {
  148.                     encoding = this.encoding.HeaderName;
  149.                 }

  150.                 if (response.ContentEncoding.ToLower().Contains("gzip"))
  151.                 {

  152.                     using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
  153.                     {
  154.                         using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
  155.                         {

  156.                             str = reader.ReadToEnd();
  157.                         }
  158.                     }
  159.                 }
  160.                 else if (response.ContentEncoding.ToLower().Contains("deflate"))
  161.                 {
  162.                     using (DeflateStream stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress))
  163.                     {
  164.                         using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
  165.                         {

  166.                             str = reader.ReadToEnd();
  167.                         }

  168.                     }
  169.                 }
  170.                 else
  171.                 {
  172.                     using (Stream stream = response.GetResponseStream())
  173.                     {
  174.                         using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
  175.                         {

  176.                             str = reader.ReadToEnd();
  177.                         }
  178.                     }
  179.                 }


  180.                 request.Abort();
  181.                 response.Close();
  182.                 request.Abort();
  183.                 if (response.Cookies.Count > 0)
  184.                 {
  185.                     this.cc.Add(response.Cookies);
  186.                 }
  187.                 model.Html = str;
  188.                 return model;
  189.             }
  190.             catch (Exception ex)
  191.             {
  192.                 if (request != null) request.Abort();
  193.                 if (response != null)
  194.                 {
  195.                     response.Close();

  196.                     return new ResponseModel() { Html = ex.Message, Header = response.Headers };
  197.                 }
  198.                 return new ResponseModel() { Html = ex.Message };
  199.             }
  200.             finally
  201.             {
  202.                 if (needReset)
  203.                 {
  204.                     AllowAutoRedirect = false;
  205.                     needReset = false;
  206.                 }
  207.             }
  208.         }
  209.         /// <summary>
  210.         /// 清理string类型Cookie.剔除无用项返回结果为null时遇见错误.
  211.         /// </summary>
  212.         /// <param name="Cookies"></param>
  213.         /// <returns></returns>
  214.         public CookieCollection ClearCookie(string Cookies)
  215.         {
  216.             try
  217.             {
  218.                 CookieCollection cookies = new CookieCollection();
  219.                 string rStr = string.Empty;
  220.                 Cookies = Cookies.Replace(";", "; ");
  221.                 Regex r = new Regex("(?<=,)(?<cookie>[^ ]+=(?!deleted;)[^;]+);");
  222.                 MatchCollection ms = r.Matches("," + Cookies);
  223.                 foreach (Match m in ms)
  224.                 {
  225.                     string[] cookie = m.Groups["cookie"].Value.Split('=');

  226.                     if (cookie.Length > 1)
  227.                         cookies.Add(new Cookie(cookie[0], cookie[1]));

  228.                 }
  229.                 return cookies;
  230.             }
  231.             catch
  232.             {
  233.                 return new CookieCollection();
  234.             }
  235.         }

  236.         private ResponseModel GetHtml(string url, string refurl = null, System.Net.CookieContainer cookieContainer = null, string _contentType = "", NameValueCollection headers = null, int retType = 1)
  237.         {
  238.             if (cookieContainer == null)
  239.             {
  240.                 cookieContainer = this.cc;
  241.             }

  242.             ResponseModel model = new ResponseModel();

  243.             ServicePointManager.Expect100Continue = true;

  244.             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

  245.             HttpWebRequest request = null;
  246.             HttpWebResponse response = null;
  247.             try
  248.             {
  249.                 request = (HttpWebRequest)WebRequest.Create(url);
  250.                 if (this.Proxy != null) request.Proxy = this.Proxy;
  251.                 request.CookieContainer = cookieContainer;
  252.                 request.Timeout = timeOut;
  253.                 if (string.IsNullOrEmpty(_contentType))
  254.                 {
  255.                     request.ContentType = this.contentType;
  256.                 }
  257.                 else
  258.                 {
  259.                     request.ContentType = _contentType;
  260.                 }

  261.                 if (string.IsNullOrEmpty(refurl))
  262.                 {
  263.                     request.Referer = url;
  264.                 }
  265.                 else
  266.                 {
  267.                     request.Referer = refurl;
  268.                 }


  269.                 request.AllowAutoRedirect = AllowAutoRedirect;
  270.                 request.Accept = this.accept;
  271.                 request.UserAgent = this.userAgent;

  272.                 if (headers != null)
  273.                 {
  274.                     request.Headers.Add(Heads);
  275.                     request.Headers.Add(headers);
  276.                 }
  277.                 else
  278.                 {
  279.                     request.Headers.Add(Heads);
  280.                 }

  281.                 request.Method = "GET";


  282.                 if (retType == 1)
  283.                 {
  284.                     response = (HttpWebResponse)request.GetResponse();

  285.                     model.Header = response.Headers;

  286.                     Stream responseStream = response.GetResponseStream();

  287.                     if (response.Cookies.Count > 0)
  288.                     {
  289.                         this.cc.Add(response.Cookies);
  290.                     }

  291.                     model.Stream = responseStream;

  292.                     return model;

  293.                 }

  294.                 string str = string.Empty;
  295.                 response = (HttpWebResponse)request.GetResponse();

  296.                 model.Header = response.Headers;

  297.                 string encoding = "utf-8";

  298.                 if (!string.IsNullOrEmpty(response.CharacterSet))
  299.                 {
  300.                     encoding = response.CharacterSet.ToLower();
  301.                 }
  302.                 else
  303.                 {
  304.                     encoding = this.encoding.HeaderName;
  305.                 }

  306.                 if (response.ContentEncoding.ToLower().Contains("gzip"))
  307.                 {

  308.                     using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
  309.                     {
  310.                         using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
  311.                         {

  312.                             str = reader.ReadToEnd();
  313.                         }
  314.                     }
  315.                 }
  316.                 else if (response.ContentEncoding.ToLower().Contains("deflate"))
  317.                 {
  318.                     using (DeflateStream stream = new DeflateStream(response.GetResponseStream(), CompressionMode.Decompress))
  319.                     {
  320.                         using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
  321.                         {

  322.                             str = reader.ReadToEnd();
  323.                         }

  324.                     }
  325.                 }
  326.                 else
  327.                 {
  328.                     using (Stream stream = response.GetResponseStream())
  329.                     {
  330.                         using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(encoding)))
  331.                         {

  332.                             str = reader.ReadToEnd();
  333.                         }
  334.                     }
  335.                 }

  336.                 if (response.Cookies.Count > 0)
  337.                 {
  338.                     cookieContainer.Add(response.Cookies);
  339.                 }


  340.                 request.Abort();
  341.                 response.Close();

  342.                 model.Html = str;
  343.                 return model;
  344.             }
  345.             catch (Exception ex)
  346.             {
  347.                 if (request != null) request.Abort();
  348.                 if (response != null)
  349.                 {
  350.                     response.Close();

  351.                     return new ResponseModel() { Html = ex.Message, Header = response.Headers };
  352.                 }
  353.                 return new ResponseModel() { Html = ex.Message };
  354.             }
  355.             finally
  356.             {
  357.                 if (needReset)
  358.                 {
  359.                     AllowAutoRedirect = false;
  360.                     needReset = false;
  361.                 }
  362.             }
  363.         }

  364.         private bool CheckValidationResult(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  365.         {
  366.             //直接通过HTTPS的证书请求
  367.             return true;
  368.         }

  369.         public Stream GetStream(string url)
  370.         {
  371.             HttpWebRequest request = null;
  372.             HttpWebResponse response = null;
  373.             try
  374.             {
  375.                 request = (HttpWebRequest)WebRequest.Create(url);
  376.                 if (this.Proxy != null) request.Proxy = this.Proxy;
  377.                 request.CookieContainer = this.cc;
  378.                 request.ContentType = this.contentType;
  379.                 //      request.ServicePoint.ConnectionLimit = this.maxTry;
  380.                 request.Timeout = 0x1388;
  381.                 request.Referer = url;
  382.                 request.Accept = this.accept;
  383.                 request.UserAgent = this.userAgent;
  384.                 request.Method = "GET";
  385.                 response = (HttpWebResponse)request.GetResponse();

  386.                 Stream responseStream = response.GetResponseStream();
  387.                 // this.currentTry--;
  388.                 if (response.Cookies.Count > 0)
  389.                 {
  390.                     this.cc.Add(response.Cookies);
  391.                 }
  392.                 return responseStream;
  393.             }
  394.             catch (Exception ex)
  395.             {
  396.                 //   if (this.currentTry <= this.maxTry) this.GetHtml(url, cookieContainer);
  397.                 //   this.currentTry--;
  398.                 if (request != null) request.Abort();
  399.                 if (response != null) response.Close();
  400.                 return null;
  401.             }
  402.         }


  403.         #region String与CookieContainer互转
  404.         /// <summary>
  405.         /// 将String转CookieContainer
  406.         /// </summary>
  407.         /// <param name="url"></param>
  408.         /// <param name="cookie"></param>
  409.         /// <returns></returns>
  410.         public CookieContainer StringToCookie(string url, string cookie)
  411.         {
  412.             string[] arrCookie = cookie.Split(';');
  413.             CookieContainer cookie_container = new CookieContainer();    //加载Cookie
  414.             foreach (string sCookie in arrCookie)
  415.             {
  416.                 if (sCookie.IndexOf("expires") > 0)
  417.                     continue;
  418.                 cookie_container.SetCookies(new Uri(url), sCookie);
  419.             }
  420.             return cookie_container;
  421.         }


  422.         /// <summary>
  423.         /// 将CookieContainer转换为string类型
  424.         /// </summary>
  425.         /// <param name="cc"></param>
  426.         /// <returns></returns>
  427.         public string GetCookieString()
  428.         {
  429.             System.Collections.Generic.List<Cookie> lstCookies = new System.Collections.Generic.List<Cookie>();
  430.             Hashtable table = (Hashtable)cc.GetType().InvokeMember("m_domainTable",
  431.                 System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField |
  432.                 System.Reflection.BindingFlags.Instance, null, cc, new object[] { });
  433.             StringBuilder sb = new StringBuilder();
  434.             foreach (object pathList in table.Values)
  435.             {
  436.                 SortedList lstCookieCol = (SortedList)pathList.GetType().InvokeMember("m_list",
  437.                     System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField
  438.                     | System.Reflection.BindingFlags.Instance, null, pathList, new object[] { });
  439.                 foreach (CookieCollection colCookies in lstCookieCol.Values)
  440.                     foreach (Cookie c in colCookies)
  441.                     {
  442.                         sb.Append(c.Name).Append("=").Append(c.Value).Append(";");
  443.                     }
  444.             }
  445.             return sb.ToString();
  446.         }
  447.         #endregion

  448.     }
复制代码


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-11-8 16:22:33 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-10-16 20:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表