使用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{
}
}
2. 再来看一下接收页面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的操作。。。
}