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);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值