Stock Quotes
Web Service
StockTicker.asmx
<%@ WebService Language="C#" Class="StockTicker"%>
using System.Web.Services;
using System.Collections;
public class StockTicker: WebService {
Hashtable tab = new Hashtable();
public StockTicker() {
tab["AMZN"] = 57.74; // Amazon
tab["CSCO"] = 28.50; // Cisco
tab["IBM"] = 99.67; // IBM
tab["MSFT"] = 28.72; // Microsoft
tab["SUNW"] = 5.66; // Sun Microsystems
}
// return the current quote for the requested symbol
[WebMethod]
public double GetQuote(string symbol) {
object quote = tab[symbol];
if (quote == null) return 0.0; else return (double)quote;
}
}
|
If this file is stored in a virtual directory with the name "samples"
one can generate a proxy with the command-line tool wsdl:
wsdl /out:StockTicker.cs http://localhost/samples/StockTicker.asmx?WSDL
The source code of the resulting proxy class is shown here:
StockTicker.cs
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
// Runtime Version: 1.0.3705.288
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
//------------------------------------------------------------------------------
//
// This source code was auto-generated by wsdl, Version=1.0.3705.288.
//
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Services;
///
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="StockTickerSoap", Namespace="http://tempuri.org/")]
public class StockTicker : System.Web.Services.Protocols.SoapHttpClientProtocol {
///
public StockTicker() {
this.Url = "http://localhost/Samples/StockTicker.asmx";
}
///
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetQuote", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public System.Double GetQuote(string symbol) {
object[] results = this.Invoke("GetQuote", new object[] {
symbol});
return ((System.Double)(results[0]));
}
///
public System.IAsyncResult BeginGetQuote(string symbol, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("GetQuote", new object[] {
symbol}, callback, asyncState);
}
///
public System.Double EndGetQuote(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((System.Double)(results[0]));
}
}
|
Client Class for Invoking the Proxy
StockTickerClient.cs
using System;
class StockTickerClient {
public static void Main(string[] arg) {
StockTicker ticker = new StockTicker();
double val = ticker.GetQuote(arg[0]);
Console.WriteLine(arg[0] + " = " + val);
}
}
|
Compile the client and the proxy as follows:
csc StockTickerClient.cs StockTicker.cs
and call the client like this, for example:
StockTicker MSFT
|