• 几个http请求相关的函数 HttpWebRequest: Post , Get ; PostAndRedirect


    几个http请求相关的函数 HttpWebRequest: Post , Get ; PostAndRedirect


    1、 通过HttpWebRequest发起一个Post请求,并获取返回数据
    使用指定编码格式发送一个POST请求,并通过约定的编码格式获取返回的数据

        
    /// <summary>
        
    /// 使用指定编码格式发送一个POST请求,并通过约定的编码格式获取返回的数据
        
    /// </summary>
        
    /// <param name="url">请求的url地址</param>
        
    /// <param name="parameters">请求的参数集合</param>
        
    /// <param name="reqencode">请求的编码格式</param>
        
    /// <param name="resencode">接收的编码格式</param>
        
    /// <returns></returns>
        public static string SendPostRequest(string url, NameValueCollection parameters, Encoding reqencode, Encoding resencode)
        {
            HttpWebRequest req 
    = (HttpWebRequest)WebRequest.Create(url);
            req.Method 
    = "post";
            req.ContentType 
    = "application/x-www-form-urlencoded";

            StringBuilder parassb 
    = new StringBuilder();
            
    foreach (string key in parameters.Keys)
            {
                
    if (parassb.Length > 0)
                    parassb.Append(
    "&");
                parassb.AppendFormat(
    "{0}={1}", key, parameters[key]);
            }
            
    byte[] data = reqencode.GetBytes(parassb.ToString());
            Stream reqstream 
    = req.GetRequestStream();
            reqstream.Write(data, 
    0, data.Length);
            reqstream.Close();
            
    string result = String.Empty;
            
    using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), resencode))
            {
                result 
    = reader.ReadToEnd();
            }
            
    return result;
        }


    2、通过HttpWebRequest发起一个Get请求,并获取返回数据

    HttpWebRequest 发送一个GET请求


        
    /*
         * 需要引用如下namespace
         * using System.Reflection;
         * using System.Text;
         * using System.Net;
         * using System.IO;
         
    */

        
    /// <summary>
        
    /// HttpWebRequest 发送一个GET请求
        
    /// </summary>
        
    /// <param name="url">请求的url地址</param>
        
    /// <param name="parameters">请求的参数集合</param>
        
    /// <param name="reqencode">请求的编码格式</param>
        
    /// <param name="resencode">接收的编码格式</param>
        
    /// <returns></returns>
        public static string SendGetRequest(string baseurl, NameValueCollection parameters, Encoding reqencode, Encoding resencode)
        {
            StringBuilder parassb 
    = new StringBuilder();
            
    foreach (string key in parameters.Keys)
            {
                
    if (parassb.Length > 0)
                    parassb.Append(
    "&");
                parassb.AppendFormat(
    "{0}={1}", HttpUtility.UrlEncode(key, reqencode), HttpUtility.UrlEncode(parameters[key], reqencode));
            }

            
    if (parassb.Length > 0)
            {
                baseurl 
    += "?" + parassb;
            }
            HttpWebRequest req 
    = (HttpWebRequest)WebRequest.Create(baseurl);
            req.Method 
    = "GET";
            req.MaximumAutomaticRedirections 
    = 3;
            req.Timeout 
    = 5000;

            
    string result = String.Empty;
            
    using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), resencode))
            {
                result 
    = reader.ReadToEnd();
            }
            
    return result;
        }

     
    3、通过编程的方式实现Post提交请求并重定向至新的URL地址

    Post请求并且重定向

        
    /// <summary>
        
    /// Post请求并且重定向
        
    /// </summary>
        
    /// <param name="url"></param>
        
    /// <param name="parameters"></param>
        
    /// <param name="context"></param>
        public static void PostAndRedirect(string url, NameValueCollection parameters, HttpContext context)
        {
            StringBuilder script 
    = new StringBuilder();
            script.AppendFormat(
    "<form name=redirpostform action='{0}' method='post'>", url);
            
    foreach (string key in parameters.Keys)
            {
                script.AppendFormat(
    "<input type='hidden' name='{0}' value='{1}'>",
                    key, parameters[key]);
            }
            script.Append(
    "</form>");
            script.Append(
    "<script language='javascript'>redirpostform.submit();</script>");
            context.Response.Write(script);
            context.Response.End();
        }

    --

  • 相关阅读:
    Linux 清空nohup.out(引用别人的文章)
    Nginx map模块
    Nginx 防盗链 secure_link 模块
    Nginx HTTP框架提供的其它变量
    NC 命令引用了一个高手的文章做收藏
    Nginx HTTP框架提供的请求相关变量
    6 MyISAM和InnoDB
    5.MVCC
    4 乐观锁和悲观锁
    Redis原理
  • 原文地址:https://www.cnblogs.com/didi/p/1750723.html
Copyright © 2020-2023  润新知