INDEX-HTML

几个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();
    }

 

--

posted @ 2010-06-03 14:04  sudo!!  阅读(1881)  评论(0编辑  收藏  举报