Delayed Stock Quote Service

The Delayed Stock Quote service provides recent (not real time) stock information given the stock symbol.

WSDL Interface

<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://ws.cdyne.com/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://ws.cdyne.com/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://ws.cdyne.com/">
      <s:import namespace="http://www.w3.org/2001/XMLSchema" />
      <s:element name="GetQuote">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="StockSymbol" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="LicenseKey" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetQuoteResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="GetQuoteResult" type="s0:QuoteData" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="QuoteData">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="StockSymbol" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="LastTradeAmount" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="LastTradeDateTime" type="s:dateTime" />
          <s:element minOccurs="1" maxOccurs="1" name="StockChange" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="OpenAmount" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="DayHigh" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="DayLow" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="StockVolume" type="s:int" />
          <s:element minOccurs="0" maxOccurs="1" name="MktCap" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="PrevCls" type="s:decimal" />
          <s:element minOccurs="0" maxOccurs="1" name="ChangePercent" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="FiftyTwoWeekRange" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="EarnPerShare" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="PE" type="s:decimal" />
          <s:element minOccurs="0" maxOccurs="1" name="CompanyName" type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="QuoteError" type="s:boolean" />
          <s:element minOccurs="1" maxOccurs="1" name="AverageDailyVolume" type="s:int" />
        </s:sequence>
      </s:complexType>
      <s:element name="GetQuickQuote">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="StockSymbol" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="LicenseKey" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetQuickQuoteResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="GetQuickQuoteResult" type="s:decimal" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetQuoteDataSet">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="StockSymbols" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="LicenseKey" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetQuoteDataSetResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="GetQuoteDataSetResult">
              <s:complexType>
                <s:sequence>
                  <s:element ref="s:schema" />
                  <s:any />
                </s:sequence>
              </s:complexType>
            </s:element>
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="ImportantMessage">
        <s:complexType />
      </s:element>
      <s:element name="ImportantMessageResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ImportantMessageResult" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="QuoteData" type="s0:QuoteData" />
      <s:element name="decimal" type="s:decimal" />
      <s:element name="DataSet" nillable="true">
        <s:complexType>
          <s:sequence>
            <s:element ref="s:schema" />
            <s:any />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="string" nillable="true" type="s:string" />
    </s:schema>
  </types>
  <message name="GetQuoteSoapIn">
    <part name="parameters" element="s0:GetQuote" />
  </message>
  <message name="GetQuoteSoapOut">
    <part name="parameters" element="s0:GetQuoteResponse" />
  </message>
  <message name="GetQuickQuoteSoapIn">
    <part name="parameters" element="s0:GetQuickQuote" />
  </message>
  <message name="GetQuickQuoteSoapOut">
    <part name="parameters" element="s0:GetQuickQuoteResponse" />
  </message>
  <message name="GetQuoteDataSetSoapIn">
    <part name="parameters" element="s0:GetQuoteDataSet" />
  </message>
  <message name="GetQuoteDataSetSoapOut">
    <part name="parameters" element="s0:GetQuoteDataSetResponse" />
  </message>
  <message name="ImportantMessageSoapIn">
    <part name="parameters" element="s0:ImportantMessage" />
  </message>
  <message name="ImportantMessageSoapOut">
    <part name="parameters" element="s0:ImportantMessageResponse" />
  </message>
  <message name="GetQuoteHttpGetIn">
    <part name="StockSymbol" type="s:string" />
    <part name="LicenseKey" type="s:string" />
  </message>
  <message name="GetQuoteHttpGetOut">
    <part name="Body" element="s0:QuoteData" />
  </message>
  <message name="GetQuickQuoteHttpGetIn">
    <part name="StockSymbol" type="s:string" />
    <part name="LicenseKey" type="s:string" />
  </message>
  <message name="GetQuickQuoteHttpGetOut">
    <part name="Body" element="s0:decimal" />
  </message>
  <message name="GetQuoteDataSetHttpGetIn">
    <part name="StockSymbols" type="s:string" />
    <part name="LicenseKey" type="s:string" />
  </message>
  <message name="GetQuoteDataSetHttpGetOut">
    <part name="Body" element="s0:DataSet" />
  </message>
  <message name="ImportantMessageHttpGetIn" />
  <message name="ImportantMessageHttpGetOut">
    <part name="Body" element="s0:string" />
  </message>
  <message name="GetQuoteHttpPostIn">
    <part name="StockSymbol" type="s:string" />
    <part name="LicenseKey" type="s:string" />
  </message>
  <message name="GetQuoteHttpPostOut">
    <part name="Body" element="s0:QuoteData" />
  </message>
  <message name="GetQuickQuoteHttpPostIn">
    <part name="StockSymbol" type="s:string" />
    <part name="LicenseKey" type="s:string" />
  </message>
  <message name="GetQuickQuoteHttpPostOut">
    <part name="Body" element="s0:decimal" />
  </message>
  <message name="GetQuoteDataSetHttpPostIn">
    <part name="StockSymbols" type="s:string" />
    <part name="LicenseKey" type="s:string" />
  </message>
  <message name="GetQuoteDataSetHttpPostOut">
    <part name="Body" element="s0:DataSet" />
  </message>
  <message name="ImportantMessageHttpPostIn" />
  <message name="ImportantMessageHttpPostOut">
    <part name="Body" element="s0:string" />
  </message>
  <portType name="DelayedStockQuoteSoap">
    <operation name="GetQuote">
      <documentation>This method retrieves a current stock quote.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuoteSoapIn" />
      <output message="s0:GetQuoteSoapOut" />
    </operation>
    <operation name="GetQuickQuote">
      <documentation>This method retrieves just a stock price.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuickQuoteSoapIn" />
      <output message="s0:GetQuickQuoteSoapOut" />
    </operation>
    <operation name="GetQuoteDataSet">
      <documentation>This method retrieves the stock information and returns it in a dataset.  Use a , to diplay multiple quotes.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuoteDataSetSoapIn" />
      <output message="s0:GetQuoteDataSetSoapOut" />
    </operation>
    <operation name="ImportantMessage">
      <input message="s0:ImportantMessageSoapIn" />
      <output message="s0:ImportantMessageSoapOut" />
    </operation>
  </portType>
  <portType name="DelayedStockQuoteHttpGet">
    <operation name="GetQuote">
      <documentation>This method retrieves a current stock quote.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuoteHttpGetIn" />
      <output message="s0:GetQuoteHttpGetOut" />
    </operation>
    <operation name="GetQuickQuote">
      <documentation>This method retrieves just a stock price.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuickQuoteHttpGetIn" />
      <output message="s0:GetQuickQuoteHttpGetOut" />
    </operation>
    <operation name="GetQuoteDataSet">
      <documentation>This method retrieves the stock information and returns it in a dataset.  Use a , to diplay multiple quotes.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuoteDataSetHttpGetIn" />
      <output message="s0:GetQuoteDataSetHttpGetOut" />
    </operation>
    <operation name="ImportantMessage">
      <input message="s0:ImportantMessageHttpGetIn" />
      <output message="s0:ImportantMessageHttpGetOut" />
    </operation>
  </portType>
  <portType name="DelayedStockQuoteHttpPost">
    <operation name="GetQuote">
      <documentation>This method retrieves a current stock quote.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuoteHttpPostIn" />
      <output message="s0:GetQuoteHttpPostOut" />
    </operation>
    <operation name="GetQuickQuote">
      <documentation>This method retrieves just a stock price.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuickQuoteHttpPostIn" />
      <output message="s0:GetQuickQuoteHttpPostOut" />
    </operation>
    <operation name="GetQuoteDataSet">
      <documentation>This method retrieves the stock information and returns it in a dataset.  Use a , to diplay multiple quotes.  Use a license key of 0 for testing.</documentation>
      <input message="s0:GetQuoteDataSetHttpPostIn" />
      <output message="s0:GetQuoteDataSetHttpPostOut" />
    </operation>
    <operation name="ImportantMessage">
      <input message="s0:ImportantMessageHttpPostIn" />
      <output message="s0:ImportantMessageHttpPostOut" />
    </operation>
  </portType>
  <binding name="DelayedStockQuoteSoap" type="s0:DelayedStockQuoteSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    <operation name="GetQuote">
      <soap:operation soapAction="http://ws.cdyne.com/GetQuote" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="GetQuickQuote">
      <soap:operation soapAction="http://ws.cdyne.com/GetQuickQuote" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="GetQuoteDataSet">
      <soap:operation soapAction="http://ws.cdyne.com/GetQuoteDataSet" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    <operation name="ImportantMessage">
      <soap:operation soapAction="http://ws.cdyne.com/ImportantMessage" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
  </binding>
  <binding name="DelayedStockQuoteHttpGet" type="s0:DelayedStockQuoteHttpGet">
    <http:binding verb="GET" />
    <operation name="GetQuote">
      <http:operation location="/GetQuote" />
      <input>
        <http:urlEncoded />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
    <operation name="GetQuickQuote">
      <http:operation location="/GetQuickQuote" />
      <input>
        <http:urlEncoded />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
    <operation name="GetQuoteDataSet">
      <http:operation location="/GetQuoteDataSet" />
      <input>
        <http:urlEncoded />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
    <operation name="ImportantMessage">
      <http:operation location="/ImportantMessage" />
      <input>
        <http:urlEncoded />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
  </binding>
  <binding name="DelayedStockQuoteHttpPost" type="s0:DelayedStockQuoteHttpPost">
    <http:binding verb="POST" />
    <operation name="GetQuote">
      <http:operation location="/GetQuote" />
      <input>
        <mime:content type="application/x-www-form-urlencoded" />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
    <operation name="GetQuickQuote">
      <http:operation location="/GetQuickQuote" />
      <input>
        <mime:content type="application/x-www-form-urlencoded" />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
    <operation name="GetQuoteDataSet">
      <http:operation location="/GetQuoteDataSet" />
      <input>
        <mime:content type="application/x-www-form-urlencoded" />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
    <operation name="ImportantMessage">
      <http:operation location="/ImportantMessage" />
      <input>
        <mime:content type="application/x-www-form-urlencoded" />
      </input>
      <output>
        <mime:mimeXml part="Body" />
      </output>
    </operation>
  </binding>
  <service name="DelayedStockQuote">
    <port name="DelayedStockQuoteSoap" binding="s0:DelayedStockQuoteSoap">
      <soap:address location="http://ws.cdyne.com/delayedstockquote/delayedstockquote.asmx" />
    </port>
    <port name="DelayedStockQuoteHttpGet" binding="s0:DelayedStockQuoteHttpGet">
      <http:address location="http://ws.cdyne.com/delayedstockquote/delayedstockquote.asmx" />
    </port>
    <port name="DelayedStockQuoteHttpPost" binding="s0:DelayedStockQuoteHttpPost">
      <http:address location="http://ws.cdyne.com/delayedstockquote/delayedstockquote.asmx" />
    </port>
  </service>
</definitions>

Client

If you invoke wsdl2java on the above WSDL document, you can run this client to interact with the service:

package delayedquote;
                                                                           
import javax.xml.rpc.Stub;
import javax.naming.InitialContext;
                                                                           
public class Client
{
    public static void main(String[] args) throws Exception
    {
    |   // get the initial context
    |   InitialContext ctx = new InitialContext();
    |                                                                      
    |   // lookup the service
    |   DelayedStockQuote svc = (DelayedStockQuote)
    |       ctx.lookup("xmlrpc:soap:delayedquote.DelayedStockQuote");
    |                                                                      
    |   // get stub reference
    |   DelayedStockQuoteSoap port = svc.getDelayedStockQuoteSoap();
    |                                                                      
    |   // set the end point address if specified
    |   if (args.length > 1) {
    |   |   Stub stub = (Stub) port;
    |   |   stub._setProperty("javax.xml.rpc.service.endpoint.address", args[1]);
    |   }
    |                                                                      
    |   // Get the stock symbol if specified
    |   String symbol = (args.length > 0) ? args[0] : "NOVL";
    |                                                                      
    |   // Get the Stock data
    |   QuoteData stkdata = port.getQuote(symbol, "");
    |                                                                      
    |   // print result
    |   System.out.println("Stock data for " + symbol + " :\n");
    |   System.out.println("Company Name: " + stkdata.getCompanyName());
    |   System.out.println("Last Trade: " + stkdata.getLastTradeAmount());
    |   System.out.println("Daily High: " + stkdata.getDayHigh());
    |   System.out.println("Daily Low: " + stkdata.getDayLow());
    |   System.out.println("52 Week Range: " + stkdata.getFiftyTwoWeekRange());
    }
}

Please refer to the README file for details on how to build and run the example.



Copyright © 2003, 2004 Novell, Inc. All rights reserved. Copyright © 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.