Wednesday, 27 July 2011

RSS Reader using ASP.NET 2.0 and VB.NET 2005


RSS Feed is very popular in Internet. This tutorial will show you how to create a RSS Reader using ASP.NET 2.0 and VB.NET.

At first, import the namespace of System.Net, System.IO, and System.Xml

Imports System.Net
Imports System.IO
Imports System.Xml

In this sample, we created a simple function to process the RSS feed from a sample URL. This function define a string of rssURL as its parameter. This string contains the RSS's URL. It will use the value of rssURL to create a WebRequest.

WebRequest is the abstract base class for the .NET Framework's request/response model for accessing data from the Internet. An application that uses the request/response model can request data from the Internet in a protocol-agnostic manner, in which the application works with instances of the WebRequest class while protocol-specific descendant classes carry out the details of the request.

Requests are sent from an application to a particular URI, such as a Web page on a server. The URI determines the proper descendant class to create from a list of WebRequest descendants registered for the application. WebRequest descendants are typically registered to handle a specific protocol, such as HTTP or FTP, but can be registered to handle a request to a specific server or path on a server.

We moved our web sites to Server Intellect and have found them to be incredibly professional. Their setup is very easy and we were up and running in no time.

The response to this request will be put into WebResponse object. The WebResponse class is the abstract base class from which protocol-specific response classes are derived. Applications can participate in request and response transactions in a protocol-agnostic manner using instances of the WebResponse class while protocol-specific classes derived from WebResponse carry out the details of the request. Client applications do not create WebResponse objects directly; they are created by calling the GetResponse method on a WebRequest instance.

After then, the WebResponse object will be used to create a stream to get the XML data. Stream is the abstract base class of all streams. A stream is an abstraction of a sequence of bytes, such as a file, an input/output device, an inter-process communication pipe, or a TCP/IP socket. The Stream class and its derived classes provide a generic view of these different types of input and output, isolating the programmer from the specific details of the operating system and the underlying devices. The we used a XmlDocument to store the stream data. XmlDocument manipulating the data of XML, finally read the RSS contents from Feed.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim rssURL As String = "http://www.codeguru.com/icom_includes/feeds/codeguru/rss-all.xml"
Response.Write("<font size=5><b>Site: " + rssURL + "</b></font><br />")
ProcessRSSItem(rssURL)
Response.Write("<hr />")
rssURL = "http://www.developer.com/icom_includes/feeds/special/dev-5.xml"
Response.Write("<font size=5><b>Site: " + rssURL + "</b></font><br />")
Call ProcessRSSItem(rssURL)

End Sub
Private Sub ProcessRSSItem(ByVal rssURL As String)

Dim myRequest As WebRequest = System.Net.WebRequest.Create(rssURL)
Dim myResponse As WebResponse = myRequest.GetResponse()

Dim rssStream As Stream = myResponse.GetResponseStream()
Dim rssDoc As New XmlDocument()
rssDoc.Load(rssStream)

Dim rssItems As XmlNodeList = rssDoc.SelectNodes("rss/channel/item")

Dim title As String = ""
Dim link As String = ""
Dim description As String = ""
Dim i As Integer

For i = 0 To rssItems.Count - 1
Dim rssDetail As XmlNode

rssDetail = rssItems.Item(i).SelectSingleNode("title")
If rssDetail.Equals(Nothing) = False Then

title = rssDetail.InnerText

Else

title = ""
End If

rssDetail = rssItems.Item(i).SelectSingleNode("link")
If rssDetail.Equals(Nothing) = False Then
link = rssDetail.InnerText

Else

link = ""
End If

rssDetail = rssItems.Item(i).SelectSingleNode("description")
If rssDetail.Equals(Nothing) = False Then

description = rssDetail.InnerText

Else

description = ""
End If

Response.Write("<p><b><a href='" + link + "' target='new'>" + title + "</a></b><br/>")
Response.Write(description + "

")
Next
End Sub

I just signed up at Server Intellect and couldn't be more pleased with my Windows Server! Check it out and see for yourself.

The front end Default.aspx page looks something like this:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>RSS</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<fieldset style="height: 383px">
<legend><strong>RSS</strong></legend><br />
</fieldset>
</div>
</form>
</body>
</html>

Try Server Intellect for Windows Server Hosting. Quality and Quantity!

The flow for the code behind page as follows.

Imports System.Net
Imports System.IO
Imports System.Xml

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim rssURL As String = "http://www.codeguru.com/icom_includes/feeds/codeguru/rss-all.xml"
Response.Write("<font size=5><b>Site: " + rssURL + "</b></font><br />")
ProcessRSSItem(rssURL)
Response.Write("<hr />")
rssURL = "http://www.developer.com/icom_includes/feeds/special/dev-5.xml"
Response.Write("<font size=5><b>Site: " + rssURL + "</b></font><br />")
Call ProcessRSSItem(rssURL)

End Sub

Private Sub ProcessRSSItem(ByVal rssURL As String)

Dim myRequest As WebRequest = System.Net.WebRequest.Create(rssURL)
Dim myResponse As WebResponse = myRequest.GetResponse()

Dim rssStream As Stream = myResponse.GetResponseStream()
Dim rssDoc As New XmlDocument()
rssDoc.Load(rssStream)

Dim rssItems As XmlNodeList = rssDoc.SelectNodes("rss/channel/item")

Dim title As String = ""
Dim link As String = ""
Dim description As String = ""
Dim i As Integer

For i = 0 To rssItems.Count - 1
Dim rssDetail As XmlNode

rssDetail = rssItems.Item(i).SelectSingleNode("title")
If rssDetail.Equals(Nothing) = False Then

title = rssDetail.InnerText

Else

title = ""
End If

rssDetail = rssItems.Item(i).SelectSingleNode("link")
If rssDetail.Equals(Nothing) = False Then
link = rssDetail.InnerText

Else

link = ""
End If

rssDetail = rssItems.Item(i).SelectSingleNode("description")
If rssDetail.Equals(Nothing) = False Then

description = rssDetail.InnerText

Else

description = ""
End If

Response.Write("<p><b><a href='" + link + "' target='new'>" + title + "</a></b><br/>")
Response.Write(description + "

")
Next
End Sub
End Class

Looking for the C#.NET 2005 Version? Click Here!

Looking for more ASP.NET Tutorials? Click Here!

No comments:

Post a Comment