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

91 篇文章 1 订阅
27 篇文章 0 订阅
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, 0, 1024)) > 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, 0, 256);
        string str = null;
        while (count > 0)
        {
            str += new String(read, 0, count);
            count = readStream.Read(read, 0, 256);
        }
        readStream.Close();
        myResp.Close();

        Response.Write(str);
    }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值