使用POST方式可以向别的页面发送请求,并获取返回结果。
可以从一个页面发送POST到另一个页面,也可以在winform工程中使用HTTPRequest发送POST到一个页面。我们拿ASP.NET的aspx页面做个例子,从一个aspx页面POST.aspx ,发送请求到Receive.aspx页面。
1.首先,建立工程,添加两个页面,Post.aspx和Receive.aspx
在post页面中放一个BUTTON,在它的click方法中我们可以写这样的一段代码:
private void Button1_Click(object sender, System.EventArgs e)
{
//XML文件路径
string xmlFileName = Server.MapPath("File/Frame.xml");
HttpWebRequest req = null;
try
{
//设置要POST到的页面URL,这里中文参数或者有特殊符号的,要进行编码.
string url = "http://localhost/Receive.aspx" +
"?DwgFileName="+HttpUtility.UrlEncode("NNN+10111452505252706++2.bmp,NNN+10111457375757706++13.bmp")+
"&PltFileName="+HttpUtility.UrlEncode("NNN+10110934363434706++主页.JPG");
//创建一个HttpWebRequest对象
req = (HttpWebRequest) HttpWebRequest.Create(url);
//设置它提交数据的方式post
req.Method = "POST";
//设置 Content-type HTTP 标头的值
req.ContentType = "text/xml";// "application/x-www-form-urlencoded;charset=gb2312";
using (StreamWriter requestWriter = new StreamWriter(req.GetRequestStream()))
{
//定义一个StreamReader对象,用于读取xml文件的内容
StreamReader reader = new StreamReader(xmlFileName);
string ret = reader.ReadToEnd();
reader.Close();
requestWriter.WriteLine(ret);//将读取的内容写入到RequestStream中。
}
Response.Write("发出去了");
}
catch(Exception ex)
{
throw ex;
}
finally{
}
}
-
再来看一下接收页面Receive.aspx
在Receive.aspx页面的PageLoad方法中进行接收POST过来的请求。
private void Page_Load(object sender, System.EventArgs e) { if(Request.RequestType == "POST") { //Response.ContentType = "text/xml"; string pltFileName = Request.QueryString["PltFileName"];//PLT文件名 string dwgFileName = Request.QueryString["DwgFileName"];//dwg文件名列表 :111.dwg,222.dwg,333.dwg..... //接收并读取POST过来的XML文件流 StreamReader reader = new StreamReader(Request.InputStream); String xmlData = reader.ReadToEnd(); try { //声明一个XMLDoc文档对象,LOAD()xml字符串 XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlData); //得到XML文档根节点 XmlElement root = doc.DocumentElement; .....进行自己对XML的操作。。。 }