一、向post请求中写入数据,最终保存在了HttpWebRequest.Params中:
1)如果存入的是IDictionary类型的字符串变量,如:“username=administrator”,则key=value;
2)如果写入的是string类型的变量,如"username",则key=null,value=username;
protected void btnLogin_Click(object sender, EventArgs e) { string Url = "http://localhost:18472/DataRequest.aspx"; string contentType = "application/x-www-form-urlencoded"; string username = "administrator"; string password = "admin"; IDictionary<string,string> param=new Dictionary<string,string>(); param.Add("username",username); param.Add("password",password); int i = 0; StringBuilder sb=new StringBuilder(); foreach (var key in param.Keys) { if (i>0) { sb.AppendFormat("&{0}={1}", key, param[key]); } else { sb.AppendFormat("{0}={1}", key, param[key]); } i++; } //string content = SendPost(sb.ToString(),Url,contentType); string content = SendPost(username,Url,contentType); } /// <summary> /// /// </summary> /// <param name="data">写入流中的数据,最后将保存在request.params中,是Idictionary类型的变量;如果是没有等号的string类型,key=null,value=string</param> /// <param name="url">请求的url</param> /// <param name="contentType">请求的内容类型</param> /// <returns></returns> public static string SendPost(string data, string url, string contentType) { string content = string.Empty; HttpWebRequest httpWebRequest = WebRequest.Create(url) as HttpWebRequest; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.Method = "POST"; httpWebRequest.ContentType = contentType; using (StreamWriter sw = new StreamWriter(httpWebRequest.GetRequestStream())) { sw.Write(data); } HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; using (StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream(), System.Text.Encoding.Default)) { content = sr.ReadToEnd(); } //httpWebRequest.EndGetResponse; return content; }
二、从request中取出写入的data数据(比如:xml等)的另一种方法:从流中获取(仅一次)
string content=""; using (Stream stream = HttpContext.Current.Request.InputStream) { using (StreamReader sr = new StreamReader(stream, Encoding.UTF8)) { content=sr.ReadToEnd(); } }
三、实现数据在IHttpModule和IHttpHandler之间(process项目和web项目之间)数据的组织和共享的键/值集合,保存在context.Items中
string XML=content;
HttpContext context=HttpContext.Current;
context.Items.Add("XML", XML);
四、从Items集合中取出数据
string XML=context.Items["XML"].ToString();