Tag Archive for 'web service'

Building a weather service

Create web service to return personal weather station or airport weather station data from wunderground.com.

The web service will return JSON or XML data. wunderground.com API returns XML data.

When a user request weather information for a location, the web service will return the closest weather information for that location that is available. If nothing is available, or the closest is deemed to be too far away, the user will be asked if this is good enuogh and a message will be added to our logs informing the application administrator that closer weather data is required.

If the user, or an administrator adds a new weather station, the longitude and latitude will be added to the database, as with the name of the station, a link, and an ID that will map to a file system location, when it was added and if the last update was successful. Weather stations once added will be updated every 3 hours, 8 times in a 24 hour period. These will be translated into JSON files when requested.

The directory system will be based on weather station ID and the date in the form YYYYMMDD. Each directory will only contain up to 8 XML files, relating to a single weather station and day. Each directory may also contain JSON files. Perhaps a PHP XSLT engine, or C XSLT engine could be used to generate the desired JSON and JSONP files. We may utilise a library such as Xalan-C to generate JSON files. I’ve investigated XSLT solutions and it appears that PHP has suitable XSLT functions. I will modify this procedure, but it shows that the functionality is suitable.

$proc = new XSLTProcessor();

if (!$proc->hasExsltSupport())
{
   die('EXSLT support not available');
}
// Load the XML source
$xml = new DOMDocument;
$xml->load('test.xml');

$xsl = new DOMDocument;
$xsl->load('test.xsl');

// Configure the transformer
$proc->importStyleSheet($xsl); // attach the xsl rules

if(isset($_GET["callback"])) echo $_GET["callback"]."(";
echo $proc->transformToDoc($xml)->firstChild->wholeText;
if(isset($_GET["callback"])) echo ")";

We will be able to resolve the closest weather station or stations to a particular point and (in our user interface) allow a user to select the favoured weather station.

Debugging SOAP Web services

SoapUI is a useful little tool for reading wsdl files, from a URL or as a file. It can then generate default request messages for each method allowing you to go through and tailor a set of test data. It has been developed in Java and builds requests and displays responses from the web service. I’ve got version 1.5 which is completely suitable for my current needs, though I notice they are up to version 2.5 and they have a professional release.

TCPMon was part of the Apache Axis1 project, but it is now an independent Apache project. The only available version is 1.0, released in March 2006! TCPMon is useful for debugging traffic between any TCP client and server. You set up a local port and point it to a server and port. TCPMon then shows you the communication. Very useful for any TCP based project, especially so for SOAP.