向一个网页发起post请求,获取其返回数据流

新建一个Web窗体,访问msdn上的一个页面,并输出获取到的数据流。

1         protected void Page_Load(object sender, EventArgs e)
2         {
3             string strResult = GetWebRequest("http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.aspx""");
4             Response.Write(strResult);
5             Response.End();
6         }
 1         /// <summary>
 2         /// 获取访问页面的数据流
 3         /// </summary>
 4         /// <param name="strUrl">页面url</param>
 5         /// <param name="strPrams">问号后的参数串</param>
 6         /// <param name="method"></param>
 7         /// <returns></returns>
 8         public string GetWebRequest(string strUrl, string strPrams)
 9         {
10             HttpWebRequest webRequest = null;
11 
12             StreamWriter requestWriter = null;
13 
14             string responseData = "";
15 
16             webRequest = System.Net.WebRequest.Create(strUrl) as HttpWebRequest;
17 
18             //设置HttpWebRequest的属性
19             if (webRequest != null)
20             {
21                 webRequest.Method = "POST";
22                 webRequest.ServicePoint.Expect100Continue = false;
23 
24                 webRequest.ContentType = "application/x-www-form-urlencoded";
25                 requestWriter = new StreamWriter(webRequest.GetRequestStream());
26                 try
27                 {
28                     requestWriter.Write(strPrams);
29                 }
30                 catch
31                 {
32                     throw;
33                 }
34                 finally
35                 {
36                     requestWriter.Close();
37                     requestWriter = null;
38                 }
39 
40                 responseData = WebResponseGet(webRequest);
41 
42                 webRequest = null;
43             }
44 
45             return responseData;
46         }
47 
48         /// <summary>
49         /// 读取数据流
50         /// </summary>
51         /// <param name="webRequest"></param>
52         /// <returns></returns>
53         private string WebResponseGet(HttpWebRequest webRequest)
54         {
55             StreamReader responseReader = null;
56 
57             string responseData = "";
58 
59             try
60             {
61                 responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
62                 responseData = responseReader.ReadToEnd();
63             }
64             catch
65             {
66                 throw;
67             }
68             finally
69             {
70                 webRequest.GetResponse().GetResponseStream().Close();
71                 responseReader.Close();
72                 responseReader = null;
73             }
74 
75             return responseData;
76         }

 

这样,Web窗体运行出来的结果,与直接在浏览器里访问http://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest.aspx的结果一样。

posted on 2012-08-31 15:47  明树  阅读(1775)  评论(0编辑  收藏  举报