zoukankan      html  css  js  c++  java
  • C# Http请求(GET/HTTP/HTTPS)

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
    using System.Net.Security;  
    using System.Security.Cryptography.X509Certificates;  
    using System.DirectoryServices.Protocols;  
    using System.ServiceModel.Security;  
    using System.Net;  
    using System.IO;  
    using System.IO.Compression;  
    using System.Text.RegularExpressions;  
    
    namespace BaiduCang  
    {  
       /// <summary>  
       /// 有关HTTP请求的辅助类  
       /// </summary>  
       public class HttpWebResponseUtility  
       {  
           private static 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)";  
           /// <summary>  
           /// 创建GET方式的HTTP请求  
           /// </summary>  
           /// <param name="url">请求的URL</param>  
           /// <param name="timeout">请求的超时时间</param>  
           /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>  
           /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>  
           /// <returns></returns>  
           public static HttpWebResponse CreateGetHttpResponse(string url,int? timeout, string userAgent,CookieCollection cookies)  
           {  
               if (string.IsNullOrEmpty(url))  
               {  
                   throw new ArgumentNullException("url");  
               }  
               HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;  
               request.Method = "GET";  
               request.UserAgent = DefaultUserAgent;  
               if (!string.IsNullOrEmpty(userAgent))  
               {  
                   request.UserAgent = userAgent;  
               }  
               if (timeout.HasValue)  
               {  
                   request.Timeout = timeout.Value;  
               }  
               if (cookies != null)  
               {  
                   request.CookieContainer = new CookieContainer();  
                   request.CookieContainer.Add(cookies);  
               }  
               return request.GetResponse() as HttpWebResponse;  
           }  
           /// <summary>  
           /// 创建POST方式的HTTP请求  
           /// </summary>  
           /// <param name="url">请求的URL</param>  
           /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>  
           /// <param name="timeout">请求的超时时间</param>  
           /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>  
           /// <param name="requestEncoding">发送HTTP请求时所用的编码</param>  
           /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>  
           /// <returns></returns>  
           public static HttpWebResponse CreatePostHttpResponse(string url,IDictionary<string,string> parameters,int? timeout, string userAgent,Encoding requestEncoding,CookieCollection cookies)  
           {  
               if (string.IsNullOrEmpty(url))  
               {  
                   throw new ArgumentNullException("url");  
               }  
               if(requestEncoding==null)  
               {  
                   throw new ArgumentNullException("requestEncoding");  
               }  
               HttpWebRequest request=null;  
               //如果是发送HTTPS请求  
               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 = "POST";  
               request.ContentType = "application/x-www-form-urlencoded";  
                 
               if (!string.IsNullOrEmpty(userAgent))  
               {  
                   request.UserAgent = userAgent;  
               }  
               else 
               {  
                   request.UserAgent = DefaultUserAgent;  
               }  
    
               if (timeout.HasValue)  
               {  
                   request.Timeout = timeout.Value;  
               }  
               if (cookies != null)  
               {  
                   request.CookieContainer = new CookieContainer();  
                   request.CookieContainer.Add(cookies);  
               }  
               //如果需要POST数据  
               if(!(parameters==null||parameters.Count==0))  
               {  
                   StringBuilder buffer = new StringBuilder();  
                   int i = 0;  
                   foreach (string key in parameters.Keys)  
                   {  
                       if (i > 0)  
                       {  
                           buffer.AppendFormat("&{0}={1}", key, parameters[key]);  
                       }  
                       else 
                       {  
                           buffer.AppendFormat("{0}={1}", key, parameters[key]);  
                       }  
                       i++;  
                   }  
                   byte[] data = requestEncoding.GetBytes(buffer.ToString());  
                   using (Stream stream = request.GetRequestStream())  
                   {  
                       stream.Write(data, 0, data.Length);  
                   }  
               }  
               return request.GetResponse() as HttpWebResponse;  
           }  
    
           private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)  
           {  
               return true; //总是接受  
           }  
       }  
    }
  • 相关阅读:
    评审管理小结
    安全性测试入门 (五):Insecure CAPTCHA 验证码绕过
    安全性测试入门 (四):Session Hijacking 用户会话劫持的攻击和防御
    安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御
    测试管理:问题驱动的测试过程改进
    逻辑思维驱动 (测试) 工作管理
    测试管理:用量化的思想管理工作
    软件质量报告模板-产品质量度量
    一篇短文再谈“敏捷”
    Windows XP系列全下载(均为MSDN原版)
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/3354487.html
Copyright © 2011-2022 走看看