C# 通过post发送和接收数据的范例源码

本文提供了一个使用C#进行POST请求的数据发送和接收的代码实例,展示了如何解析和处理POST请求中的参数,包括从请求中读取数据、构建参数列表以及向服务器发送POST请求的具体实现。

将写代码过程中常用的代码备份一次,如下代码是关于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);

}

private NameValueCollection GETInput()
{ return Request.QueryString; }
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 = { };
    {
        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);
            { SortList.Add(paramN, paramV); }
            { SortList.Remove(paramN); SortList.Add(paramN, paramV); }
        }
    }
    {
        int equalindex = POSTStr.IndexOf('=');
        if (equalindex != -1)
            string paramN = POSTStr.Substring(0, equalindex);
            string paramV = POSTStr.Substring(equalindex + 1);
            SortList.Add(paramN, paramV);

        }
        { 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=好飞"); 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();

    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、付费专栏及课程。

余额充值