C# Post数据和接收简单示例【摘】

public partial class Post_Server : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {

        
string type = "";
        
string Re = "";
        Re 
+= "数据传送方式:";
        
if (Request.RequestType.ToUpper() == "POST")
        {
            type 
= "POST";
            Re 
+= type + "<br/>参数分别是:<br/>";
            SortedList table 
= Param();
            
if (table != null)
            {
                
foreach (DictionaryEntry De in table) { Re += "参数名:" + De.Key + " 值:" + De.Value + "<br/>"; }
            }
            
else
            { Re 
= "你没有传递任何参数过来!"; }
        }
        
else
        {
            type 
= "GET";
            Re 
+= type + "<br/>参数分别是:<br/>";
            NameValueCollection nvc 
= GETInput();
            
if (nvc.Count != 0)
            {
                
for (int i = 0; i < nvc.Count; i++) { Re += "参数名:" + nvc.GetKey(i) + " 值:" + nvc.GetValues(i)[0+ "<br/>"; }
            }
            
else
            { Re 
= "你没有传递任何参数过来!"; }
        }
        Response.Write(Re);

    }

    
//获取GET返回来的数据
    private NameValueCollection GETInput()
    { 
return Request.QueryString; }
    
// 获取POST返回来的数据
    private string PostInput()
    {
        
try
        {
            System.IO.Stream s 
= Request.InputStream;
            
int count = 0;
            
byte[] buffer = new byte[1024];
            StringBuilder builder 
= new StringBuilder();
            
while ((count = s.Read(buffer, 01024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 
0, count));
            }
            s.Flush();
            s.Close();
            s.Dispose();
            
return builder.ToString();
        }
        
catch (Exception ex)
        { 
throw ex; }
    }
    
private SortedList Param()
    {
        
string POSTStr = PostInput();
        SortedList SortList 
= new SortedList();
        
int index = POSTStr.IndexOf("&");
        
string[] Arr = { };
        
if (index != -1//参数传递不只一项
        {
            Arr 
= POSTStr.Split('&');
            
for (int i = 0; i < Arr.Length; i++)
            {
                
int equalindex = Arr[i].IndexOf('=');
                
string paramN = Arr[i].Substring(0, equalindex);
                
string paramV = Arr[i].Substring(equalindex + 1);
                
if (!SortList.ContainsKey(paramN)) //避免用户传递相同参数
                { SortList.Add(paramN, paramV); }
                
else //如果有相同的,一直删除取最后一个值为准
                { SortList.Remove(paramN); SortList.Add(paramN, paramV); }
            }
        }
        
else //参数少于或等于1项
        {
            
int equalindex = POSTStr.IndexOf('=');
            
if (equalindex != -1)
            { 
//参数是1项
                string paramN = POSTStr.Substring(0, equalindex);
                
string paramV = POSTStr.Substring(equalindex + 1);
                SortList.Add(paramN, paramV);

            }
            
else //没有传递参数过来
            { SortList = null; }
        }
        
return SortList;
    }




}

 

 

    protected void Button1_Click(object sender, EventArgs e)
    {
        Encoding encode 
= System.Text.Encoding.GetEncoding("utf-8");
        
byte[] arrB = encode.GetBytes("aa=aa&bb=好飞");
        HttpWebRequest myReq 
= (HttpWebRequest)WebRequest.Create("http://localhost:11626/MyTest/Post_Server.aspx");
        myReq.Method 
= "POST";
        myReq.ContentType 
= "application/x-www-form-urlencoded";
        myReq.ContentLength 
= arrB.Length;
        Stream outStream 
= myReq.GetRequestStream();
        outStream.Write(arrB, 
0, arrB.Length);
        outStream.Close();


        
//接收HTTP做出的响应
        WebResponse myResp = myReq.GetResponse();
        Stream ReceiveStream 
= myResp.GetResponseStream();
        StreamReader readStream 
= new StreamReader(ReceiveStream, encode);
        Char[] read 
= new Char[256];
        
int count = readStream.Read(read, 0256);
        
string str = null;
        
while (count > 0)
        {
            str 
+= new String(read, 0, count);
            count 
= readStream.Read(read, 0256);
        }
        readStream.Close();
        myResp.Close();

        Response.Write(str);
    }

 

posted @ 2011-05-13 09:22  Rex.He  阅读(3336)  评论(0编辑  收藏  举报