ibcadmin 发表于 2014-6-30 09:09:04

c#使用后台代码POST和GET请求代码

c#后台POST和GET请求代码
/// <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);
                  }
                  else
                  {
                        buffer.AppendFormat("{0}={1}", key, parameters);
                  }
                  i++;
                }
                byte[] data = requestEncoding.GetBytes(buffer.ToString());
                using (Stream stream = request.GetRequestStream())
                {
                  stream.Write(data, 0, data.Length);
                }
            }

            return request.GetResponse() as HttpWebResponse;
      }
页: [1]
查看完整版本: c#使用后台代码POST和GET请求代码