转:Working with HttpWebRequest and HttpWebResponse in ASP.NET
2009-12-31 17:46
736 查看
转自:http://www.worldofasp.net/tut/WebRequest/Working_with_HttpWebRequest_and_HttpWebResponse_in_ASPNET_114.aspx
You can use this two classes to make requests to other Web Pages via HTTP and parse the resulting text to extract data. This is what we know as screen scraping.
In ASP world, you normally need to rely on third party components called ASPTear to grab the contents from other site. But now with the help of HttpWebRequest and HttpWebResponse, you can do that easily without have to invoke third party components.
1. Sample Code on Grabbing Contents (Screen Scraping)
C#
VB.NET
If you try to run the code, you can see that all the HTML code from Microsoft site has been grabbed and display on your local web server.
2. Sample Code on how to Post Data to remote Web Page using HttpWebRequest
C#
VB.NET
Introduction
I will explain about the usage of HttpWebRequest and HttpWebResponse in this article. As you all probably know or heard about this class before. HttpWebRequest and HttpWebResponse class is inside the System.NET namespace, and this two classes is designed to communicate by using the Http ProtocolYou can use this two classes to make requests to other Web Pages via HTTP and parse the resulting text to extract data. This is what we know as screen scraping.
In ASP world, you normally need to rely on third party components called ASPTear to grab the contents from other site. But now with the help of HttpWebRequest and HttpWebResponse, you can do that easily without have to invoke third party components.
Using HttpWebRequest and HttpWebResponse
In the code below, I provide very basic sample code on how to use HttpWebRequest and HttpWebResponse. In the first example I will list out the code on how to do screen scraping and the second example would be doing HttpPost data to another website1. Sample Code on Grabbing Contents (Screen Scraping)
C#
protected void Page_Load(object sender,EventArgs e) { Uri uri = new Uri("http://www.microsoft.com/default.aspx");if(uri.Scheme = Uri.UriSchemeHttp) { HttpWebRequest request = HttpWebRequest.Create(uri); request.Method = WebRequestMethods.Http.Get; HttpWebResponse response = request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream());string tmp = reader.ReadToEnd(); response.Close(); Response.Write(tmp); } }
VB.NET
Protected Sub Page_Load(ByVal sender as Object,ByVal e as System.EventArgs) Dim uri as New Uri("http://www.microsoft.com/default.aspx");If(uri.Scheme == uri.UriSchemeHttp) Then Dim request as HttpWebRequest = HttpWebRequest.Create(uri) request.Method = WebRequestMethods.Http.Get Dim response As HttpWebResponse = request.GetResponse() Dim reader As New StreamReader(response.GetResponseStream()) Dim tmp As String = reader.ReadToEnd() response.Close() Response.Write(tmp) End If End Sub
If you try to run the code, you can see that all the HTML code from Microsoft site has been grabbed and display on your local web server.
2. Sample Code on how to Post Data to remote Web Page using HttpWebRequest
C#
protected void Page_Load(object sender,EventArgs e) { Uri uri = new Uri("http://www.amazon.com/exec/obidos/search-handle-form/102-5194535-6807312");string data = "field-keywords=ASP.NET 2.0";if (uri.Scheme == Uri.UriSchemeHttp) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = WebRequestMethods.Http.Post; request.ContentLength = data.Length; request.ContentType = "application/x-www-form-urlencoded"; StreamWriter writer = new StreamWriter(request.GetRequestStream()); writer.Write(data); writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream());string tmp = reader.ReadToEnd(); response.Close(); Response.Write(tmp); } }
VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadDim uri As New Uri("http://www.amazon.com/exec/obidos/search-handle-form/102-5194535-6807312") Dim data As String = "field-keywords=ASP.NET 2.0"If uri.Scheme = uri.UriSchemeHttp Then Dim request As HttpWebRequest = HttpWebRequest.Create(uri) request.Method = WebRequestMethods.Http.Post request.ContentLength = data.Length request.ContentType = "application/x-www-form-urlencoded" Dim writer As New StreamWriter(request.GetRequestStream) writer.Write(data) writer.Close() Dim oResponse As HttpWebResponse = request.GetResponse() Dim reader As New StreamReader(oResponse.GetResponseStream()) Dim tmp As String = reader.ReadToEnd() oResponse.Close() Response.Write(tmp) End If End Sub
Conclusion
Based on the sample code above, you can see that it is quite simple to do Http Post and Http Get to remote Website by using two built in class HttpWebRequest and HttpWebResponse. There is another set of classes called FtpWebRequest and FtpWebResponse that allow you to do ftp post and get to remote ftp Server.相关文章推荐
- How to use HttpWebRequest and HttpWebResponse in .NET
- securely implement request processing, filtering and content redirection with HTTP pipeline in ASP.NET
- Log message Request and Response in ASP.NET WebAPI
- C# WebAPI with HttpWebRequest, HttpWebResponse and HttpContext Example
- Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据
- Working with Web Resources in ASP.NET 2.0
- Working with Web Resources in ASP.NET 2.0
- 【整理】Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据
- Capturing and Transforming ASP.NET Output with Response.Filter 转载自http://www.west-wind.com/weblog/posts/2009/Nov/13/Capturing-and-Transforming-ASPNET-
- wp7使用POST请求Asp.net网页时,HttpWebRequest的BeginGetResponse方法抛出NotSupportException异常的解决方法
- Fiddler监听HttpClient-(Monitoring HTTP Output with Fiddler in .NET HTTP Clients and WCF Proxies - Rick Strahl's Web Log )
- Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据
- 【整理】Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据
- ASP.NET HttpWebRequest和HttpWebResponse
- Working with Data in ASP.NET 2.0 :: Master Pages and Site Navigation
- 利用webservice和.net技术上传和下载文件--Sending files in chunks with MTOM Web Services and .NET 2.0 from:http://www.codeproject.com/soap/MTO
- Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据
- ASP.NET MVC 4 WebAPI. Support Areas in HttpControllerSelector
- http://www.codeproject.com/Questions/117324/upload-file-in-c-with-HttpWebRequest
- Sending files in chunks with MTOM Web Services and .NET 2.0