C#中Get 与 Post提交数据的总结示例(源代码)

用Get 与 Post提交数据是我们经常做的事情,在.net里面是如何实现的呢?

我们知道在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上下面几点不同:
1、Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。
2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。

1. get是从服务器上获取数据,post是向服务器传送数据。
2.  get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。

     post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form(可以缩写为Request)获取提交的数据。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5. get安全性较低,post安全性较高。 

下面用Get和Post2种方式演示如何提交数据

GetDataSend   Get 提交数据

GetDataReceive  接收get的请求数据 

PostDataSend   Post 提交数据

PostDataReceive  接收Post的请求数据 

GetDataSend.aspx
<form id="form1" action="GetDataReceive.aspx">
<div>
<input type="text" name="title" value="tt"/>
<input type="text" name="desc" value="content"/>
<input type=submit value="GET方式">
</div>
</form>

 

GetDataReceive.aspx
 protected void Page_Load(object sender, EventArgs e)
{
 string strTitle = HttpContext.Current.Request.QueryString["Title"];

string strContent=Request.QueryString["Desc"];

// QueryString可获得url中的参数

string strRes = "This is the response from the server:\r\n"
+ "标题为:, " + strTitle + "\r\nDesc为" + strContent + "!";

HttpContext.Current.Response.Clear();
//清除缓冲区流中的所有内容输出。

HttpContext.Current.Response.Write(strRes);
//将信息写入 HTTP 响应输出流。

HttpContext.Current.Response.Flush();
//向客户端发送当前所有缓冲的输出。
//将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 EndRequest 事件(停止请求)。


HttpContext.Current.Response.End();
 }

 

PostDataSend.aspx

<form id="form1" runat="server" method="post">
<div>
标题:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
内容:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />

<asp:Button ID="Button1" runat="server" Text="Button"
onclick
="Button1_Click" />

</div>
</form>



protected void Button1_Click(object sender, EventArgs e)
{
string strTitle = TextBox1.Text;
string strContent = TextBox2.Text;

try
{
Encoding encode
= Encoding.GetEncoding("utf-8");

string postData = "Title=" + strTitle;
string strURL = "http://localhost/Test/PostData/PostDataReceive.aspx";
postData
+= ("&Desc=" + strContent);

byte[] data = encode.GetBytes(postData);
HttpWebRequest myRequest
= (HttpWebRequest)WebRequest.Create(strURL);
myRequest.Method
= "POST";
// myRequest.ContentType = "application/x-www-form-unlencoded";
//request.ContentType = "text/xml; charset=utf-8 ";
myRequest.ContentType = "application/x-www-form-urlencoded"; //ContentType很重要!
myRequest.ContentLength = data.Length;

Stream newStream
= myRequest.GetRequestStream();
newStream.Write(data,
0, data.Length);
newStream.Close();
Response.Redirect(
"PostDataReceive.aspx");

}
catch (Exception ex)
{
Response.Write(
"<script>alert(\"" + ex.Message + "\")</script>");
}
}

 

PostDataReceive.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (Request.ServerVariables["Request_Method"].ToString() == "POST")
{
string strTitle = Request.Form["Title"];
string strContent = Request.Form["Desc"];
if (File.Exists(Server.MapPath(".") + "\\MyPostFile.txt") == false)
{
File.CreateText(Server.MapPath(
".") + "\\MyPostFile.txt");
}
StreamWriter SW;
SW
= File.AppendText(Server.MapPath(". ") + "\\MyPostFile.txt ");
SW.WriteLine(strTitle);
SW.WriteLine(strContent);
SW.Close();
SW
= null;
}
else
{
StreamReader SR;
string S;
SR
= File.OpenText(Server.MapPath(". ") + "\\MyPostFile.txt ");
S
= SR.ReadLine();
while (S != null)
{
Response.Write(S
+ "\r\n ");
S
= SR.ReadLine();
}
SR.Close();
SR
= null;
}
}

本文参考:

1.Get 与 Post 【总结】 (实例:从a.html到b.aspx传值)

2.csdn论坛

 

posted @ 2010-12-09 00:09  金码  阅读(3160)  评论(0编辑  收藏  举报