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! | You'll get answers to many questions and more from David Barnes, Lead Evangelist for IBM Emerging Internet Technologies. David will discuss aspects of Web 2.0 that bring value to corporations, academia, and government. He'll also discuss IBM's vision around Web 2.0, including the importance of remixability and consumability. The discussion will culminate with examples of various IBM Software Group solutions you can use to get ahead of the Web 2.0 adoption curve. FREE! Go There Now!
| | | | Building a software-as-a-service solution requires addressing a few key technical challenges. In this webcast, we'll focus on the role of IBM Tivoli Directory Server and WebSphere Portlet Factory in creating a Software as a Service solution. We will demonstrate how to use Tivoli Directory Server to prevent the user population of one tenant from accessing the virtual portal and portlet components of another tenant. We will also use the dynamic profile capability of WebSphere Portlet Factory to create multiple highly customized applications from one code base. FREE! Go There Now!
| | | | CakePHP is a stable production-ready, rapid-development aid for building Web sites in PHP. This "Cook up Web sites fast with CakePHP" series shows you how to build an online product catalog using CakePHP. FREE! Go There Now!
| | | | Join this webcast to see how IBM Data Studio Developer and pureQuery can take the pain out of Java data access. uApplications developed using both Java and SQL have become a common requirement. Database connectivity using Java Database Connectivity (JDBC) to create an application is a multi-step tedious process, and tooling that covers both SQL and Java has been unavailable, until now. IBM Data Studio introduces the pureQuery platform: a high-performance, Java data access platform focused on simplifying the tasks of developing, managing, and optimizing database applications and services. FREE! Go There Now!
| | | | Analysts, architects, and developers who have existing COBOL or PL/I skills and want to extend those skills to deploy new workloads on the mainframe can use the IBM Enterprise Modernization Sandbox for System z to find hands-on walkthroughs of common real world scenarios. The scenarios provide examples of how to rapidly design, create, assemble, test, and deploy high-quality Web, Web services, portal, and SOA applications for IBM CICS, IBM IMS, and IBM WebSphere Application Server. FREE! Go There Now!
| | | | Portfolio Management is about effectively managing portfolio value by aligning portfolio investments with business goals. This complimentary e-kit provides a collection of materials that can help you understand how IBM Rational enables and automates best practices for improved governance and clear visibility into portfolio and project performance across the entire IT project lifecycle. FREE! Go There Now!
| | | | Join this Rational Talks to You teleconference on November 29 at 1:00 pm ET to participate in an interactive discusssion with Grady Booch around architecture and reuse. Get your questions answered! FREE! Go There Now!
| | | | Join this Rational Talks to You teleconference on December 4 at 1:00 pm ET to discuss how Rational Method Composer can help meet your compliance objectives. Get your questions answered! FREE! Go There Now!
| | | | Get a free trial download of the latest version of IBM Rational Performance Tester V7.0.1, a load and performance testing solution for teams concerned about the scalability of their Web-based applications. Combining multiple ease-of-use features with granular detail, Rational Performance Tester simplifies the test-creation, load-generation and data-collection processes that help teams ensure the ability of their applications to accommodate required user loads. FREE! Go There Now!
| | | | Join the IBM Watchfire team for an informative discussion on techniques and best practices to proactively manage Web application security and how to effectively build application security testing into the software development lifecycle (SDLC). In this Software Delivery Platform webcast you will learn: How to better understand potential web application security vulnerabilities, best practices and how to effectively integrate application security testing into the software development lifecycle, the importance of detecting and removing software vulnerabilities during application development. FREE! Go There Now!
| | | | All FREE IBM® developerWorks Tools! | |