6CS028 Workshop - Web Services
Main Page >> Web Application Development >> Workbook >> Week 07
There are so many exciting APIs available on the web that it is impossible to cover them all here… so let’s have a look at a known REST example and a known SOAP example:
- REST - The Amazon API
- SOAP – The Google Search API
A REST example : Amazon
Note that Amazon is one of the rare providers to still offer both REST and SOAP interfaces to their services… let’s have a look at their REST API.
First, let’s simply select the top selling books on Amazon.com
With REST, it's all about calling the right URL, passing in the right parameters... here is the URL for the top selling books on Amazon.com:
If you click on the URL, your browser simply display the XML data (try looking at the page's source code).
So our PHP code looks very much like the code we used to access an RSS feed. Indeed in both cases we are accessing a remote XML file!
<H1>Top Selling Books on Amazon.com at <?= date("d-m-Y H:i"); ?></H1> <? // My key is 0NR4EHP6HAVW61V6P1G2 // APPLY FOR YOUR OWN KEY!! // Node for books $node = 283155; // Build REST url $url = "http://webservices.amazon.com/onca/xml?"; $url.= "Service=AWSECommerceService&"; $url.= "SubscriptionId=0NR4EHP6HAVW61V6P1G2&"; $url.= "Operation=BrowseNodeLookup&"; $url.= "BrowseNodeId=$node&"; $url.= "ResponseGroup=TopSellers"; // Get raw data $response = file_get_contents($url); // Convert raw data to object $xml = simplexml_load_string($response); // Browse object and display book titles foreach($xml->BrowseNodes->BrowseNode->TopSellers->TopSeller as $book) { echo $book->Title."<br>"; } ?>
And:
<H1>Top Selling Books on Amazon.com at <?= date("d-m-Y H:i"); ?></H1> <? // My key is 0NR4EHP6HAVW61V6P1G2 // APPLY FOR YOUR OWN KEY!! // Node for books $node = 283155; // Build REST url $url = "http://webservices.amazon.com/onca/xml?"; $url.= "Service=AWSECommerceService&"; $url.= "SubscriptionId=0NR4EHP6HAVW61V6P1G2&"; $url.= "Operation=BrowseNodeLookup&"; $url.= "BrowseNodeId=$node&"; $url.= "ResponseGroup=TopSellers"; // Get raw data $response = file_get_contents($url); // Convert raw data to object $xml = simplexml_load_string($response); // Put a;; asin numbers into a variable $ASIN = ""; foreach($xml->BrowseNodes->BrowseNode->TopSellers->TopSeller as $book) { $ASIN = $ASIN.$book->ASIN.","; } // Make second call, asking for more details $url = "http://webservices.amazon.com/onca/xml?"; $url.= "Service=AWSECommerceService&"; $url.= "SubscriptionId=0NR4EHP6HAVW61V6P1G2&"; $url.= "Operation=ItemLookup&"; $url.= "ItemId=$ASIN&"; $url.= "ResponseGroup=Medium"; $response = file_get_contents($url); $xml = simplexml_load_string($response); foreach($xml->Items->Item as $bd) { $ASIN = $bd->ASIN; $image = $bd->MediumImage->URL; $url = $bd->DetailPageURL; $Title =$bd->ItemAttributes->Title; echo "<IMG src=\"$image\">"; echo "$Title<BR>"; } ?>
A SOAP example
First, you need to download the NuSOAP library... it's free!
Then:
<? require("nusoap/lib/nusoap.php"); // What we are searching for $search = "Alix Bergeret"; // Create soap client $client=new soapclient("http://api.google.com/GoogleSearch.wsdl", true); // Set encoding $client->soap_defencoding = 'UTF-8'; // Prepare request $request=array( 'key'=>'4B0KufpQFHJxhAxzua0tR11ElLNrHRJ6', 'q'=>$search, 'start'=>0, 'maxResults'=>5, 'filter'=>false, 'restrict'=>'', 'safeSearch'=>true, 'lr'=>'', 'ie'=>'', 'oe'=>'', ); // Send request and read response $result = $client->call('doGoogleSearch', $request, "urn:GoogleSearch", "urn:GoogleSearch"); // Loop through array and display foreach($result['resultElements'] as $one_result) { print "<h1>{$one_result['title']}</h1>"; print "<p>{$one_result['snippet']}</p>"; } ?>