NASDAQTrades: ListMarketCenters
Inputs and Outputs Parameters for ListMarketCenters
Inputs
| Name | Description | Required | Example | | N/A |
Outputs
| Name | Description | Always Present |
|---|
ArrayOfMarketCenter | Array of MarketCenter instances | Yes | MarketCenter | Each instance represents a MarketCenter | No | | Outcome | This field describes the outcome of the method. Possible values are: Success, SystemError, RequestError and RegistrationError. | Yes | | Message | A short message describing the error if the Outcome field contains a RequestError or RegistrationError. | Yes | | Identity | This field describes how the call was authenticated. Possible values are: IP, Cookie, Header and Request. | Yes | | Delay | This field reports the time it took for the server to complete a request, in a decimal format measured in seconds (Example: 0.0016). This does not take into account any latency experienced by the caller. | Yes | | Symbol | Symbol | Yes | | Code | Market center code | Yes | | Name | Company Name | Yes |
RequestPOST http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx HTTP/1.1
Host: ws.nasdaqdod.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://ws.nasdaqdod.com/services/v1/ListMarketCenters"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<Header xmlns="http://ws.nasdaqdod.com/services/v1/">
<Username>string</Username>
<Password>string</Password>
<Tracer>string</Tracer>
</Header>
</soap:Header>
<soap:Body>
<ListMarketCenters xmlns="http://ws.nasdaqdod.com/services/v1/" />
</soap:Body>
</soap:Envelope>
ResponseHTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ListMarketCentersResponse xmlns="http://ws.nasdaqdod.com/services/v1/">
<ListMarketCentersResult>
<MarketCenter>
<Common>
<Outcome>Success or SystemError or RequestError or RegistrationError </Outcome>
<Message>string</Message>
<Identity>string</Identity>
<Delay>double</Delay>
</Common>
<Symbol>string</Symbol>
<Code>string</Code>
<Name>string</Name>
</MarketCenter>
<MarketCenter>
<Common>
<Outcome>Success or SystemError or RequestError or RegistrationError </Outcome>
<Message>string</Message>
<Identity>string</Identity>
<Delay>double</Delay>
</Common>
<Symbol>string</Symbol>
<Code>string</Code>
<Name>string</Name>
</MarketCenter>
</ListMarketCentersResult>
</ListMarketCentersResponse>
</soap:Body>
</soap:Envelope>
RequestGET http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx/ListMarketCenters? HTTP/1.1
Host: ws.nasdaqdod.com
ResponseHTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMarketCenter xmlns="http://ws.nasdaqdod.com/services/v1/">
<MarketCenter>
<Common>
<Outcome>Success or SystemError or RequestError or RegistrationError </Outcome>
<Message>string</Message>
<Identity>string</Identity>
<Delay>double</Delay>
</Common>
<Symbol>string</Symbol>
<Code>string</Code>
<Name>string</Name>
</MarketCenter>
<MarketCenter>
<Common>
<Outcome>Success or SystemError or RequestError or RegistrationError </Outcome>
<Message>string</Message>
<Identity>string</Identity>
<Delay>double</Delay>
</Common>
<Symbol>string</Symbol>
<Code>string</Code>
<Name>string</Name>
</MarketCenter>
</ArrayOfMarketCenter>
RequestPOST http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx/ListMarketCenters HTTP/1.1
Host: ws.nasdaqdod.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
ResponseHTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMarketCenter xmlns="http://ws.nasdaqdod.com/services/v1/">
<MarketCenter>
<Common>
<Outcome>Success or SystemError or RequestError or RegistrationError </Outcome>
<Message>string</Message>
<Identity>string</Identity>
<Delay>double</Delay>
</Common>
<Symbol>string</Symbol>
<Code>string</Code>
<Name>string</Name>
</MarketCenter>
<MarketCenter>
<Common>
<Outcome>Success or SystemError or RequestError or RegistrationError </Outcome>
<Message>string</Message>
<Identity>string</Identity>
<Delay>double</Delay>
</Common>
<Symbol>string</Symbol>
<Code>string</Code>
<Name>string</Name>
</MarketCenter>
</ArrayOfMarketCenter>
Sample Code for ListMarketCenters
<%@ Page Language="vb" %> <%@ Import Namespace="System.Net" %> <!-- here, NASDAQTrades is the name of this assembly--> <%@ Import Namespace="NASDAQTrades" %> <HTML> <HEAD> <script language="vb" runat="server"> ' declare the return object globally so that you can reuse it around the page Dim objMarketCenter() As MarketCenter ' call the service inside the Page_Load routine Sub Page_Load(obj as object, e as eventargs) ' create an instance of the web service Dim objTradesService As New NASDAQTrades() ' add authentication info Dim objHeader As New RemoteTrades.Header = new Header(); objHeader.Username = "YOUR_TOKEN"
objMarketCenter.HeaderValue = objHeader
' call the operation and load the return object objMarketCenter = objTradesService. ListMarketCenters() If Not objMarketCenter Is Nothing Then Select Case objMarketCenter(0).Outcome Case OutcomeTypes.RegistrationError ' add processing for handling subscription problems, e.g. Response.Write("Our subscription to this service has expired.") Case OutcomeTypes.RequestError ' add processing for handling request problems, e.g. ' you could pass back the info message received from the service Response.Write(objMarketCenter(0).Message) Case OutcomeTypes.SystemError ' add processing for handling system problems, e.g. Response.Write("Service is unavailable at this time.") End Select Else ' add error processing here ' this condition could be caused by an HTTP error (404,500...) Response.Write("Service is unavailable at this time.") End If End Sub </script> </HEAD> <BODY> <TABLE> <TR> <TD> <!-- add processing for displaying the results, e.g. --> <!-- since the return class contains an array--> <!-- we just display its first element--> <!-- each instance and its values can be easily accessed--> <!-- display the value for objArrayOfMarketCenter(0).Name--> <!-- other values could be consumed in the same manner--> <%Response.Write(objArrayOfMarketCenter(0).Name)%> </TD> </TR> </TABLE> </BODY> </HTML>
RemoteTrades.NASDAQTrades objTradesService; objTradesService = new RemoteTrades.NASDAQTrades(); /// add authentication info RemoteTrades.Header objHeader = new RemoteTrades.Header(); objHeader.Username = "YOUR_TOKEN"; objTradesService.HeaderValue = objHeader;
RemoteTrades.MarketCenter[] objMarketCenter; objMarketCenter = objTradesService. ListMarketCenters();
if (objMarketCenter == null) { /// add error processing here /// this condition could be caused by an HTTP error (404,500...) Console.Write("Service is unavailable at this time."); } else { switch(objMarketCenter[0].Outcome) { case RemoteTrades.OutcomeTypes.Success: /// add processing for displaying the results, e.g. /// since the return class contains an array /// we just display its first element /// each instance and its values can be easily accessed /// display the value for objMarketCenter[0].Name /// other values could be consumed in the same manner Console.Write(objMarketCenter[0].Name); break; default: /// add processing for handling request problems, e.g. /// you could pass back the info message received from the service Console.Write(objMarketCenter[0].Message); break; } }
This code requires the Microsoft SOAP Toolkit 3.0 and MSXML 4.0. You can download these from the Microsoft site.
Dim objSOAPClient Set objSOAPClient = Server.CreateObject("MSSOAP.SoapClient30") ' the node list is of type MSXML2.IXMLDOMNodeList Dim objXMLNodeList ' the node is of type MSXML2.IXMLDOMNode Dim objXMLNode
' initialize the soap engine objSOAPClient.ClientProperty("ServerHTTPRequest") = True objSOAPClient.MSSoapInit("http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL")
' Set the header values for authentication objSOAPClient.ConnectorProperty("Username") = "YOUR_TOKEN" ' load the node list with the records received from the service Set objXMLNodeList = objSOAPClient.ListMarketCenters()
' loop through the index records and load in the document For Each objXMLNode In objXMLNodeList ' your can print out the content of each node Response.Write objXMLNode.xml Next
This section assumes that you have Axis installed on your machine and that you are fairly familiar with it.
Because all our web services return complex types, the best way to use Axis (Apache Axis2 1.4+) is to first generate a proxy class using the 'WSDL2Java' tool'. By default, the tool will put all generated classes into the package "com.nasdaqondemand.www.services".
You should then compile the classes (including the axis dependencies): C:\axis>java org.apache.axis.wsdl.WSDL2Java http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL C:\axis>javac com\nasdaq\*.java C:\axis> C:\axis>YOUR_AXIS_INSTALLATION\bin\wsdl2java.bat -ap -uri http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL C:\axis>javac -classpath "YOUR_AXIS_INSTALLATION/lib/*" com/nasdaq/www/services/*.java You can then create your source file. See below After creating your source file, you can compile it like this: C:\axis>javac -classpath .;"YOUR_AXIS_INSTALLATION/lib/*" NASDAQTradesDemo.java // By default, all of the classes auto-generated by the Axis2 // "WSDL2Java" tool are placed into the package "com.nasdaqondemand.www.services" // for our NASDAQ WSDL, so we need an import. import com.nasdaqondemand.www.services.NASDAQTradesNASDAQTradesSoapStub;
import com.nasdaqondemand.www.services.NASDAQTradesNASDAQTradesSoapStub.*;
public class NASDAQTradesDemo {
public static void main(String[] args) throws Exception {
// Instantiate the NASDAQTrades proxy // proxy object using the Helper class. // This class was autogenerated by the WSDL2Java tool
try {
NASDAQTradesNASDAQTradesSoapStub stub = new NASDAQTradesNASDAQTradesSoapStub();
// Instantiate the return class from the operation // This class was autogenerated by the WSDL2Java tool ListMarketCenters listMarketCentersArguments = new ListMarketCenters();
// Add authentication info HeaderE header = new HeaderE();
Header myHeader = new Header();
myHeader.setUsername("YOUR_TOKEN");
header.setHeader(myHeader);
ListMarketCentersResponse response = stub.listMarketCenters(listMarketCentersArguments, header);
MarketCenter[] objMarketCenter = response.getListMarketCentersResult().getMarketCenter();
// objMarketCenter is pointing to the result of the operation if (objMarketCenter[0].getOutcome() == OutcomeTypes.RegistrationError)
{
// code to handle registration errors System.out.println(OutcomeTypes.RegistrationError.toString() + ": " + objMarketCenter[0].getMessage());
}
else if (objMarketCenter[0].getOutcome() == OutcomeTypes.RequestError)
{
// code to handle request errors System.out.println(OutcomeTypes.RequestError.toString() + ": " + objMarketCenter[0].getMessage());
}
else if (objMarketCenter[0].getOutcome() == OutcomeTypes.SystemError)
{
// code to handle system errors System.out.println(OutcomeTypes.SystemError.toString() + ": " + objMarketCenter[0].getMessage());
}
else // Success {
for(int i = 0; i < objMarketCenter.length; i++)
{
System.out.println(objMarketCenter[i].getArrayOfMarketCenter().getName());
}
}
}
catch (Exception ex) {
// add exception handling code here
}
}
}
NuSoap is one of the three major SOAP implementations for PHP: PEAR::SOAP, NuSOAP, and PHP-SOAP.
If you use PHP, we recommend you use NuSoap to access our web services. NuSoap uses our web services for demonstration in their own documentation and it works well.
This section assumes that you have PHP installed on your machine and that you are fairly familiar with it. We have tested this implementation for PHP 4.2.1 on Windows 2000. It should also work with more recent versions on more recent platforms. Note that PHP 5.0 supports SOAP natively (without extension), please follow their documentation for upgrade or code changes required.
To install NuSoap, download the latest package from this location. You can unzip the package in your PHP application directory. The package includes libraries (/lib) and samples (/samples). The sample code below is based on the wsdlclient1.php sample.
If you use one of the older version or PHP (i.e. 4.2.1) , you will need to comment out one line in the /lib/nusoap.php file. That section is not supported in earlier version. The line to comment out is line 1877 as shown below. 1876 // set response timeout 1877 //socket_set_timeout( $this->fp, $response_timeout); You can then create your source file. <?php // need to use the NuSoap extension require_once('../lib/nusoap.php');
// if you access the internet through a proxy server $proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : ''; $proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : ''; $proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : ''; $proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';
// define the SOAP client using the url for the service $client = new soapclient('http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL', true, $proxyhost, $proxyport, $proxyusername, $proxypassword);
// assess the results $err = $client->getError(); if ($err) { echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; }
// create an array of parameters $param = array( ); // call the service, passing the parameters and the name of the operation $result = $client->call('ListMarketCenters', array('parameters' => $param), '', '', false, true); // assess the results if ($client->fault) { echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { $err = $client->getError(); if ($err) { echo '<h2>Error</h2><pre>' . $err . '</pre>'; } else { // display the results echo '<h2>Result</h2><pre>'; // this function exposes the complete structure of the return class print_r($result); echo '</pre>'; } } // print the SOAP request echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>'; // print the SOAP response echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>'; // print the PHP debugging trace echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>'; ?>
PHP-SOAP is one of the three major SOAP implementations for PHP: PEAR::SOAP, NuSOAP, and PHP-SOAP.
This section assumes that you have PHP5.0 installed on your machine and that you are fairly familiar with it.
Note that PHP 5.0 supports SOAP, please follow their documentation for code changes required.
Here is a sample source for this operation.
<?php
// define the SOAP client using the url for the service $client = new soapclient('http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL');
// create an array of parameters $param = array(
);
// add authentication info new SoapHeader('http://www.xignite.com/services/', "Header", array("Username" => "YOUR_TOKEN")); $client->__setSoapHeaders(array($xignite_header));
// call the service, passing the parameters and the name of the operation $result = $client->ListMarketCenters($param);
// assess the results if (is_soap_fault($result)) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
echo '<h2>Result</h2><pre>';
print_r($result);
echo '</pre>';
}
// print the SOAP request echo '<h2>Request</h2><pre>' . htmlspecialchars($client->__getLastRequest(), ENT_QUOTES) . '</pre>';
// print the SOAP request Headers echo '<h2>Request Headers</h2><pre>' . htmlspecialchars($client->__getLastRequestHeaders(), ENT_QUOTES) . '</pre>';
// print the SOAP response echo '<h2>Response</h2><pre>' . htmlspecialchars($client->__getLastResponse(), ENT_QUOTES) . '</pre>';
?>
This section assumes that you have SOAP::Lite for Perl installed on your machine and that you are fairly familiar with it. But just in case your are not:You can then use a text editor to create the source code below. You can execute it by running:
C:\perl\perl demo.pl Note that there are some unique steps to follow to use SOAP::Lite with .Net web Services. For detailed info, check this article on MSDN.
Here is a sample source for this operation.
# the maptype instruction is critical for compatibility use SOAP::Lite maptype => {}; use Data::Dumper;
# this is our namespace my $namespace = 'http://ws.nasdaqdod.com/services/v1/';
# declare the service using the namespace, the SOAP action and the uri my $service = SOAP::Lite -> uri($namespace) -> on_action( sub { join '/', 'http://ws.nasdaqdod.com/services/v1', $_[1] } ) -> proxy('http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx');
# .Net requires the method, header, and attributes to be fully qualified my $method = SOAP::Data->name('ListMarketCenters') ->attr({xmlns => $namespace});
# this section is required for authentication # you can skip it if you use IP-based authentication my $header = SOAP::Header->name(Header => { Username => '<your username here>'})->uri($namespace)->prefix('');
# same here, you can omit $header if you use IP-based authentication
my @params = ( $header, ); # you can now call the service my $result = $service->call($method => @params); if ($result->fault) { print $result->faultstring; } else { # here we parse the output using the main return class # and one of its attributes # Uncoment the line below to print the full result object graph: # print Dumper($result); # since the output is an array, we must loop through the returned instances foreach my $instance ($result->valueof('//MarketCenter')) { print $instance->{'objArrayOfMarketCenter[0]/Name'}, "\n"; } }
This section assumes that you have some knowledge of the Ruby language, and in particular the SOAP library Savon.
require 'rubygems'
require 'savon'
require 'pp'
url = "http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL" client = Savon::Client.new(url)
response = client.request :ListMarketCenters do soap.env_namespace = "" soap.element_form_default = false soap.namespaces["xmlns:xignite"] = "http://www.xignite.com/services/" soap.input = "xignite:ListMarketCenters" soap.header => { xignite:Header => { xignite:Username => "YOUR_TOKEN" } } soap.body = {
} end pp response.to_hash
Dim objTradesService As New RemoteTrades.NASDAQTrades() Dim objHeader As New RemoteTrades.Header = new RemoteTrades.Header(); objHeader.Username = "YOUR_TOKEN"
objTrades.HeaderValue = objHeader
Dim objMarketCenter() As RemoteTrades.MarketCenter _ = objTradesService.ListMarketCenters()
If Not objMarketCenter Is Nothing Then Select Case objMarketCenter(0).Outcome Case RemoteTrades.OutcomeTypes.RegistrationError ' display the error to facilitate diagnostics, e.g. Console.WriteLine(objMarketCenter(0).Message) Case RemoteTrades.OutcomeTypes.RequestError ' add processing for handling request problems, e.g. ' you could pass back the info message received from the service Console.WriteLine(objMarketCenter(0).Message) Case RemoteTrades.OutcomeTypes.SystemError ' add processing for handling system problems, e.g. Console.WriteLine("Service is unavailable at this time.") Case Else ' add processing for displaying the results, e.g. ' since the return class contains an array ' we just display its first element ' each instance and its values can be easily accessed ' display the value for objMarketCenter(0).Name ' other values could be consumed in the same manner Console.WriteLine(objMarketCenter(0).Name) End Select Else ' add error processing here ' this condition could be caused by an HTTP error (404,500...) Console.WriteLine("Service is unavailable at this time.") End If
' this DOM object will contain the result of the call Dim objResult As IXMLDOMSelection ' create an instance of the soap toolkit Dim objService As New MSSOAPLib30.SoapClient30 ' if your network uses a proxy server, add this line objService.ConnectorProperty("ProxyServer") = "ip of your proxy server" ' SOAP headers are not supported in the toolkit, so we will fake it with this handler Dim objHeader As ClientHeaderHandler Set objHeader = New ClientHeaderHandler ' set the username and passwords to your values objHeader.Username = "YOUR_TOKEN" Set objService.HeaderHandler = objHeader
' point the the toolkit to the WSDL objService.mssoapinit "http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx?WSDL"
' load the result into the DOM object Set objResult = objService.ListMarketCenters()
' you can access the properties this way: ' where objResult(5).nodeName is the name of the 5th field of the instance returned ' and objResult(5).Text is the value MsgBox objResult(5).nodeName & " = " & objResult(5).Text
' you must also add this class to your code. ' it will create the SOAP header to pass with your request Class Module "ClientHeaderHandler" Option Explicit Implements IHeaderHandler
Private m_uid As String Private m_pwd As String Private m_tracer As String
Property Let Username(ByVal value As String) m_uid = value End Property
Property Let Password(ByVal value As String) m_pwd = value End Property
Property Let Tracer(ByVal value As String) m_tracer = value End Property
Private Function iHeaderHandler_ReadHeader( _ ByVal par_reader As MSSOAPLib30.ISoapReader, _ ByVal par_HeaderNode As MSXML2.IXMLDOMNode, _ ByVal par_object As Object) As Boolean iHeaderHandler_ReadHeader = False End Function
Private Function iHeaderhandler_willWriteHeaders() As Boolean iHeaderhandler_willWriteHeaders = True End Function
Private Sub iHeaderHandler_WriteHeaders( _ ByVal par_serializer As MSSOAPLib30.ISoapSerializer, _ ByVal par_object As Object)
Dim NASDAQHeaderString As String
NASDAQHeaderString = "<Header xmlns="http://ws.nasdaqdod.com/services/v1/"> " & _ "<Username>" & m_uid & "</Username>" & _ "<Password>" & m_pwd & "</Password>" & _ "<Tracer>" & m_tracer & "</Tracer>" & _ "</Header>"
par_serializer.WriteXml NASDAQHeaderString End Sub
When working with XSL, you only need to worry about properly dealing with namespaces.
The general principle in working with XSL is to apply the stylesheet (the XSL document) to the output of the web service (XML document). The code required to accomplish this varies based on your envirobment. For instance, using VB.Net it would be:Dim objSOAPClient Dim objTemplate As New System.Xml.Xsl.XslTransform() objTemplate.Load(<url_of_XSL_template>) objTemplate.Transform(<url_of_input_document>,<url_of_output_document>)
In the code above, you want to replace the <url_of_input_document> with the following URL.
http://ws.nasdaqdod.com/v1/NASDAQTrades.asmx/ListMarketCenters?
And this is how you could write the XSL stylesheet. Note that all node names are prefixed.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://ws.nasdaqdod.com/services/v1/" version="1.0" exclude-result-prefixes="xi"> <xsl:template match="xi:ArrayOfMarketCenter"> <table> <xsl:for-each select="xi:MarketCenter"> <tr> <td> <xsl:value-of select="xi:Name"/> </td> </tr> </xsl:for-each> </table> </xsl:template></xsl:stylesheet>
The sample code is provided "as is" without any express or implied warranty. You are solely responsible for obtaining any necessary licenses or ownership rights, including for Xignite APIs and open source code, to use this sample code. Xignite has no obligation to test, certify, or support its use.
|