浅谈C#中HttpWebRequest与HttpWebResponse的使用方法

2019-12-30 15:47:04王冬梅

2.如果我们碰到需要登录而且还要验证证书的网页怎么办,其它这个也很简单把我们上面的方法综合 一下就行了,如下代码这里我以Get为例子Post例子也是同样的方法


/// <summary>
/// 传入URL返回网页的html代码
/// </summary>
public string GetUrltoHtml(string Url)
{
 StringBuilder content = new StringBuilder();
 try
 {
  //这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。
  ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
  // 与指定URL创建HTTP请求
  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  //创建证书文件
  X509Certificate objx509 = new X509Certificate(Application.StartupPath + "123.cer");
  //添加到请求里
  request.ClientCertificates.Add(objx509);
  CookieContainer objcok = new CookieContainer();
  objcok.Add(new Uri("http://www.easck.com//www.cnblogs.com"), new Cookie("键", "值"));
  objcok.Add(new Uri("http://www.easck.com// 获取对应HTTP请求的响应
  HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  // 获取响应流
  Stream responseStream = response.GetResponseStream();
  // 对接响应流(以"GBK"字符集)
  StreamReader sReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
  // 开始读取数据
  Char[] sReaderBuffer = new Char[256];
  int count = sReader.Read(sReaderBuffer, 0, 256);
  while (count > 0)
  {
   String tempStr = new String(sReaderBuffer, 0, count);
   content.Append(tempStr);
   count = sReader.Read(sReaderBuffer, 0, 256);
  }
  // 读取结束
  sReader.Close();
 }
 catch (Exception)
 {
  content = new StringBuilder("Runtime Error");
 }
 return content.ToString();
}

3.如果我们碰到那种需要验证网页来源的方法应该怎么办呢,这种情况其它是有些程序员会想到你可能会使用程序,自动来获取网页信息,为了防止就使用页面来源来验证,就是说只要不是从他们所在页面或是域名过来的请求就不接受,有的是直接验证来源的IP,这些都可以使用下面一句来进入,这主要是这个地址是可以直接伪造的


request.Referer = <a href=http://www.easck.com//www.aspku.com</a>;

呵呵其它很简单因为这个地址可以直接修改。但是如果服务器上验证的是来源的URL那就完了,我们就得去修改数据包了,这个有点难度暂时不讨论。

4.提供一些与这个例子相配置的方法

过滤HTML标签的方法


/// <summary>
/// 过滤html标签
/// </summary>
public static string StripHTML(string stringToStrip)
{
 // paring using RegEx   //
 stringToStrip = Regex.Replace(stringToStrip, "</p(?:s*)>(?:s*)<p(?:s*)>", "nn", RegexOptions.IgnoreCase | RegexOptions.Compiled);
 stringToStrip = Regex.Replace(stringToStrip, "
", "n", RegexOptions.IgnoreCase | RegexOptions.Compiled);
 stringToStrip = Regex.Replace(stringToStrip, """, "''", RegexOptions.IgnoreCase | RegexOptions.Compiled);
 stringToStrip = StripHtmlXmlTags(stringToStrip);
 return stringToStrip;
}
private static string StripHtmlXmlTags(string content)
{
 return Regex.Replace(content, "<[^>]+>", "", RegexOptions.IgnoreCase | RegexOptions.Compiled);
}