Building a Yahoo stock quote ticker
page 3 of 7
by Jason Perry
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 50617/ 90

Building the Web Service

The first step in developing the Yahoo Quote Engine is creating the web service. The web service will be responsible from grabbing the data from Yahoo and parsing this to create a friendly structure. In this application I'll use ASP.Net with C#, but web services can easily be developed using VB.Net, Java and Code fusion.

We can start our web service by creating a file named YahooQuoteWebService.asmx in the editor of your choice. I'll use DreamWeaver MX.

Once the file is created we'll declare the contents of the file as a web service using C# and also provide the class name with its namespace.

<@ WebService Language="c#" class="outthebox.web.services.YahooQuoteWebService" >

Next, let's build the structure for our web service by defining the namespaces to use, providing a namespace where our web service will sit, and defining our service as a public class that implements the WebService object.


using System.Collections;
using System.Web.Services;
using System.Net;
using System.IO;

namespace outthebox.web.services
{

	[WebService(Namespace="outthebox.web.services")]
	public class YahooQuoteWebService : WebService
	{
	}
}

With our class declared we can implement the one and only method for this web service GetQuote( string ). This method will handle the logic involved in getting our quotes from Yahoo.


[WebMethod(Description="Using stock symbol gets delayed stock information from Yahoo.",EnableSession=false)]
public string[] GetQuote( string symbol )
{
	string url;  //stores url of yahoo quote engine
	string buffer;
	string[] bufferList;
	WebRequest webRequest;
	WebResponse webResponse;
	
	url = "http://quote.yahoo.com/d/quotes.csv?s="+symbol+"&d=t&f=sl1d1t1c1ohgvj1pp2wern";
		
	webRequest = HttpWebRequest.Create( url );
	webResponse = webRequest.GetResponse();
	using( StreamReader sr = new StreamReader( webResponse.GetResponseStream() ) )
	{
		buffer = sr.ReadToEnd();
		sr.Close();
	}

	buffer = buffer.Replace( "\"", "" );
	bufferList = buffer.Split( new char[] {','} );
	return bufferList;
}

The above is a lot of code so I'll take you through the implementation chunk-by-chunk.

First we have to create a connection to Yahoo and grab the quotes. The following code grabs a comma delaminated file from Yahoo using the symbol variable and stores the results in a string variable named buffer.


url = "http://quote.yahoo.com/d/quotes.csv?s=" + symbol + "&d=t&f=sl1d1t1c1ohgvj1pp2wern";

Creates a connection to the url and stores our results in the string buffer array.
webRequest = HttpWebRequest.Create( url );
webResponse = webRequest.GetResponse();
using( StreamReader sr = new StreamReader( webResponse.GetResponseStream() ) )
{
	buffer = sr.ReadToEnd();
	sr.Close();
}

Once we have the results from Yahoo we need to break it up and store the results in a string array. This code calls the string method Split( char[] ) to separate the buffer string into chunks using the comma as the delaminator. The method returns a string[] (string array) with quotes details.


buffer = buffer.Replace( "\"", "" );
bufferList = buffer.Split( new char[] {','} );
return bufferList;

Now that you have a working web service, place it on your web server and go to the address in a web browser. You should see Microsoft's web service page with information on how to access this web service. If you don't see the page make sure ASP.Net is installed properly on your web server and check your code for errors.


View Entire Article

User Comments

Title: Nasdaq, S&P500 fix   
Name: John Dalnes
Date: 2009-07-15 1:11:34 PM
Comment:
I found this works for Nasdaq and other indexes
if (symbol.IndexOf("^") == 0)
{
url = "http://finance.yahoo.com/d/q?s=" + symbol + "&d=t&f=sl1d1t1c1ohgvj1pp2wern";

}
else
{

url = "http://quote.yahoo.com/d/quotes.csv?s=" + symbol + "&d=t&f=sl1d1t1c1ohgvj1pp2wern";
}
Title: index quotes   
Name: tilistor
Date: 2009-03-23 11:21:46 AM
Comment:
Dude try like this from your code:

http://download.finance.yahoo.com/d/quotes.csv?s=%5EDJI&f=sl1d1t1c1ohgv&e=.csv

Replace ^ with %5E

Cheers,
Title: webservice   
Name: stock market
Date: 2009-01-27 7:30:08 AM
Comment:
pls give the code how to access webservice in the aspx page in asp.net?
Title: Index quotes   
Name: Steve
Date: 2009-01-08 9:41:40 AM
Comment:
Did anyone solve this problem of the ^ being translated to the hex code "%5E"? If you enter the ^ mmaulaly in the browser within a URL it works fine. It doesn't work from within the my VB code webclient.
Title: index quotes again   
Name: kdasgupta
Date: 2008-12-06 6:13:17 PM
Comment:
Looks like Yahoo Quote stopped handling URL decoding of special characters. So, when I enter ^DJI for DOW, it is encoded as "%5EDJI". At Yahoo end, the special characters are not decoded to its corresponding character value, hence Yahoo quote service does not find any price data for the encoded symbol. "INDU" in place of ^DJI works fine.
Can anybode suggest fix for this problem? Thanks.
Title: index quotes again   
Name: Li
Date: 2008-10-30 7:52:35 PM
Comment:
I have the same problem getting S&P and Nasdaq. When I put in ^GSPC and ^IXIC, they are not working. But, if I put in "INDU", it works for Dow. Can anybody help?

thanks!
Title: Index quotes   
Name: Greg K.
Date: 2008-10-13 9:17:20 AM
Comment:
To get an index quote, use ^ instead of $.

Dow - ^DJI
S&P - ^GSPC
ND - ^IXIC

full list on finance.yahoo.com.

Good luck!
Title: WSDL file for web service   
Name: Edi Hansen
Date: 2008-07-21 12:45:11 PM
Comment:
Hi,
Is there a WSDL file for this web service? I'm trying to query web service via SSIS web services task..
thanks!
Title: Index values : $SPX, $COMPQ   
Name: Liya Tansky
Date: 2008-07-09 8:33:13 PM
Comment:
Hi, I'm trying to get values of indexes like $SPX and $COMPQ,
Your example works great for stocks, but returns empty data for $SPX. What should I change in the url in order to get to its values?

Thanks in advance
Title: Web service   
Name: Ces M
Date: 2008-06-26 9:59:57 AM
Comment:
The web service seems to work fine. It pulls data from Yahoo. My question is do I still need a flash remote package which is almost $1000? Or can we just use simple actionscript to get xml file from the web service?
Title: No longer works   
Name: Ben Poole
Date: 2008-05-22 10:59:23 AM
Comment:
it appears that Yahoo! has moved this web service, or changed the link. The pages I have used this code on are now broken, and I can't browse directly to the web service anymore.

Product Spotlight
Product Spotlight 





Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-10-13 1:17:01 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search