C# Post資料和接收簡單樣本

來源:互聯網
上載者:User

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.