Consuming a Webservice
In this article we're going to learn how to consume the 123aspx.com webservice and provide additional value to our users. Overview There are 3 parts to consuming a webservice: 1. Discovering the methods are available. 2. Creating a Proxy to the webservice. 3. Calling the webservice Discovering the methods are available Before we can begin using a webserivce, we need to understand it. ASP.NET makes this extremely easy by providing a helper page. If you call a webservice from your browser ASP.NET provides us with a very readable interface. In this example, we can see we have only 1 method available to us: GetNewResources. Upon further examination, this webmethod returns a dataset. Here is a screen shot of this page. We can manually call this webservice by clicking Invoke. Invoking our webservices produces a human readable XML document. By examining this XML document, we can determine the 4 different fields of our dataset: 1. URL 2. DateUpdated 3. Domain 4. Name Here is a snippet of the XML produced from Invoking our webservice.<xsd:element name="URL" type="xsd:string" minOccurs="0" /> <xsd:element name="DateUpdated" type="xsd:string" minOccurs="0" /> <xsd:element name="Domain" type="xsd:string" minOccurs="0" /> <xsd:element name="Name" type="xsd:string" minOccurs="0" /> Creating a Proxy Now that we know what our webservice returns, we can start to access it. However, before we can access the webservice, we need to create a proxy DLL that interfaces with the webservice. By creating a proxy, all the work is done for us, and we are able to call the webservice, just like we would any other object that resides locally on our system. To create the proxy we use a utility in the .NET SDK called "WSDL.exe". WSDL.exe is a command line tool that requires different switches. Because I can never type the switches correctly the first time, I like to use batch files. Once we provide WSDL.exe with the correct switches, it outputs a .vb file (because I chose to use VB.NET as the language, using the /l switch). Once you have the .vb file, you run it through the compiler, vbc.exe, to create the .dll. Here is the batch file I used to create the proxy dll. ECHO copy the following lines to a text file and save with the extension ".bat" ECHO this batch file will create two files as specified by the outCodeFileName ECHO and the outDLLFileName
Set UseLanguage=VB Set WSDLPath=http://64.85.12.73/websvc/whatsnew123aspx_ds.asmx?WSDL Set outCodeFileName=whatsnew123aspX_ds.vb Set outDLLFileName=whatsnew123aspX_ds.dll Set myNamespace=AspX123 set assemblies= System.Web.dll,System.dll,System.Web.Services.dll, System.Xml.dll,System.Data.dll
c:wsdl.exe /n:%myNamespace% /l:%UseLanguage% /out:%outCodeFileName% %WSDLPath% c:vbc.exe /out:%outDLLFileName% /t:library /r:%assemblies% %outCodeFileName%
In our batch file, we are using the following switches:/c: -- creates a proxy source code file from a SDL /n: -- namespace for our generated proxy,i.e.AspX123 /l -- language we want to use (i.e. vb, csharp, etc.. ) /out: -- the location to output our source code fileNext we execute the vbc compiler, feeding it the newly created source file to produce our .dll. Once we have our dll, we copy it to our /bin directory found under our application web.
Calling our Webservice To call our webservice from our .aspx page, we first need to reference the namespace we created in our batch file, using an Import directive.<%@ Import Namespace="AspX123" %> Now that we have our namespace, we can dimension a variable to hold an instance of our webmethod, and call our webmethod.Dim myWebSvc as AspX123.AspX123WebSvc = New AspX123WebSvc() Dim ds as DataSet ds = myWebSvc.GetNewResources() AspX123WebSvc is our class we defined in our webservice, and GetNewResources() is our webmethod that returns our dataset. Additional Notes Because www.123aspx.com is really only updated once a day, we don't want to have to call the webservice every time someone views our website. Instead, we want to cache the default dataview of the dataset on our webserver, and set it to expire every 12 hours. The following code will achieve this. Dim CACHE_DURATION as Integer = 12 Dim aspXNewResources as DataView aspXNewResources = Ctype( Cache("aspXNewResources"),DataView )
If ( aspXNewResources Is Nothing ) Then REM -- use the webservice, and populate the Cache Dim myWebSvc as AspX123.AspX123WebSvc = New AspX123WebSvc() Dim ds as DataSet Dim fWebService as Boolean = False
Try ds = myWebSvc.GetNewResources() fWebService = True Catch eWeb as System.Exception fWebService = False End try
IF fWebService Then 'insert the dataview into the cache aspXNewResources = New DataView( ds.Tables("ResourceList") ) Cache.Insert("aspXNewResources", aspXNewResources, Nothing, DateTime.Now.AddHours(CACHE_DURATION), TimeSpan.Zero) End If
End If myDataGrid.DataSource=aspXNewResources myDataGrid.DataBind()
aspXNewResources is declared as a DataView and we attempt to retrieve it from the webserver cache byaspXNewResources = Ctype( Cache("aspXNewResources"),DataView )If aspXNewResources is nothing, then we need to call our webservice and populate the cache, by calling Cache.Insert. Cache.Insert is an overloaded function. In our example, Cache.Insert takes the following 5 parameters:Cache.Insert(param1, param2, param3, param4, param5) param1 -- name of the cache object param2 -- object to cache param3 -- cache dependency param4 -- timespan for cache to last param5 -- absolute time for cache to expire Our Results Now that we've loaded the ASP.NET cache with our DataView, let's go ahead and bind the dataview to a Datagrid and display our results. With a little bit of formatting, our results can be seen below.| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |
More ASP.NET Code Articles More By Dave - 123aspx.com developerWorks - FREE Tools! | WebSphere Process Server delivers a unique integration framework that simplifies existing IT resources. Often, as IT assets grow to support business demand, so too does their complexity and manageability. In this webcast, we’ll discuss how WebSphere Process Server helps deliver an SOA infrastructure that provides a common model to orchestrate, mediate, connect, map, and execute the underlying IT functions. Discover how WebSphere Process Server simplifies integration of business processes by leveraging existing IT assets as reusable services without the complexities of traditional integration methodologies. FREE! Go There Now!
| | | | Visit IBM developerWorks to download a free trial version of Lotus Quickr 8.0, which enables collaboration by transforming the way everyday business content such as documents, rich media, photos, and video can be shared. Lotus Quickr makes it faster and easier to share content of all types (not just documents) within virtual teams. It is designed to make it easier to collaborate across organizational boundaries, while continuing to work within the context of familiar desktop applications. FREE! Go There Now!
| | | | Visit IBM developerWorks to download a free trial of the Rational Host Access Transformation Services (HATS) Toolkit. The HATS toolkit provides a set of plug-ins for the IBM Rational Software Delivery Platform to help you easily extend your legacy applications. HATS makes your 3270 and 5250 applications available as HTML through the most popular Web browsers, while converting your host screens to a Web look and feel and it also enables you to develop new Web, portal, and rich-client applications. FREE! Go There Now!
| | | | As systems increase in complexity, communication between systems and software teams becomes more and more difficult. Now, there’s a way to improve product quality and communication.<br />Read the “Model Driven Systems Development” white paper to see how. Also included in this kit are more educational white papers, customer examples, tutorials, informative Webcasts, and best practices for designing, building and managing systems.<br /> FREE! Go There Now!
| | | | Asset Reuse is a key strategy for companies looking to create innovative solutions to solve complex software development problems. Searching for, identifying, updating, using and deploying software assets can be a difficult challenge. Listen to this webcast, to learn about strategies and tools that you can leverage for a successful project, including Rational Asset Manager, Rational Software Architect and WebSphere Service Registry and Repository. FREE! Go There Now!
| | | | Discover how Rational tools and best practices for testing can make your job easier. The new Rational Testing eKits provide you with valuable resources – including demos, webcasts, tutorials, and articles – that help you address your specific testing needs across the software lifecycle. Five new eKits are available covering the topics of Requirements and Test Management, Functional Testing, Performance Testing, Code Quality and Embedded Systems, and SOA and Web Services Testing. FREE! Go There Now!
| | | | Learn the basics of the IBM Customer Information Control System (CICS). With a hands-on exercise, learn how to get your first CICS application up and running on your desktop using TXSeries V6.1 for Windows. The tutorial shows you how to download and install a free trial version of TXSeries V6.1. FREE! Go There Now!
| | | | Join this webcast to discover the key requirements for successful change and release management. Learn how to extend your .NET environment to improve productivity and collaboration, and address core problems afflicting team development. In this webcast, we’ll review typical challenges faced by customers and how to resolve them with the IBM Rational Change and Release Management solution, including Rational ClearCase, Rational ClearQuest and Rational Build Forge. Replay is available for 9 months. FREE! Go There Now!
| | | | The Eclipse community is constantly working to extend Eclipse's functionality. In this webcast, learn about some of the most important and feature-rich projects under development. From multi-language support to plug-in development, tune in to see what Eclipse is capable of now. FREE! Go There Now!
| | | | Explore how Rational and WebSphere software enable enterprise documentation in SOA environments. Specifically, a new integration between IBM WebSphere® Business Modeler and IBM Rational® Method Composer software can help technical writers more easily keep enterprise operations manuals in sync with changes that are made to business processes, resulting in more accurate and timely documentation that benefits the entire enterprise. FREE! Go There Now!
| | | | All FREE IBM® developerWorks Tools! | |