UPDATE - Google no longer offers a weather API. The url’s and code in this post will no longer function correctly
As you may or may not know Google has announced over the last couple of months that they plan to bring an end to a load of their services, perhaps the biggest being iGoogle.
Unfortunately one of the services they have already brought an end to is their weather API that I made of use of in this post
The code in the post now no longer works as the request URL is met with this error message
"404. That's an error"
I hope to post another update soon with examples on how to use alternative API’s.
This API will no longer function correctly as the API from Google is no longer available. The code is kept here for reference
You can obtain the current and forecast weather conditions in a user specified city with C# through the free weather API provided by Google. The main concept behind the API is to produce a URL, with a specified city, which then corresponds to an
XML file that includes the weather forecast. Handily C# makes it easy to obtain this
XML file, parse it, and finally print out the weather on a large variety of cities.
The URL we will be using, and modifying is -
For example -
will return an
XML file with the weather for London.
Now in C#, we will start by creating a
Conditions class that will simply contain a bunch of properties that represent the weather in the city at a point in time -
Now we will move on to the main
Weather class that will hold two methods -
GetCurrentConditions method will return one
Conditions object - representing the current day, and the
GetForecastedConditions method will return a
List of conditions - one for each day of the forecast. Before we begin, make sure to put the following using statement at the top of the file so that we can use the various classes and methods inside the
System.Xml namespace -
Now we can create the public static
GetCurrentConditions method that takes one string parameter representing the city -
The first thing we do is create the
XMLDocument object (representing the returned XML file), and the
XMLTextReader (which will be used to obtain the XML file and put it in our
Next, we construct the URL, adding the city string to the end of URL, and load the document into our
XMLDocument object. We then do a check to see if the XML document was successfully downloaded (i.e the city is valid). If not we set the conditions object to null, which can be used as error checking in our implementation later on.
If the document is valid, we set each property of the
Conditions object to the relevant portion of the XML document. The
SelectSingleNode method moves to each element of the file and the
data attribute and
.InnerText property are used to parse the data from the document into our object. Again, if an exception is thrown, we set the
Conditions object to null for error checking. Finally, we close the
XMLTextReader and return the
GetForecastConditions method is very similar. The only difference is the
foreach loop that goes through each forecast in the
forecast_conditions node, adds the conditions to a new
Conditions object, and adds it to the
List which is then returned at the end.