zoukankan      html  css  js  c++  java
  • 几个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();
        }

    --

  • 相关阅读:
    PAT 1088. Rational Arithmetic
    PAT 1087. All Roads Lead to Rome
    PAT 1086. Tree Traversals Again
    PAT 1085. Perfect Sequence
    PAT 1084. Broken Keyboard
    PAT 1083. List Grades
    PAT 1082. Read Number in Chinese
    求最大公因数
    [转载]Latex文件转成pdf后的字体嵌入问题的解决
    [转载]Matlab有用的小工具小技巧
  • 原文地址:https://www.cnblogs.com/didi/p/1750723.html
Copyright © 2011-2022 走看看