cvs: peardoc /en/package/webservices/services-geonames getting-started.xml

[email protected] ("David JEAN LOUIS")
Newsgroups php.pear.doc
Message-ID <cvsizi1232719597@cvsserver>
izi		Fri Jan 23 14:06:37 2009 UTC

  Modified files:              
    /peardoc/en/package/webservices/services-geonames	
                                                     	getting-started.xml 
  Log:
  added doc for exception handling, service url and failover servers
  
http://cvs.php.net/viewvc.cgi/peardoc/en/package/webservices/services-geonames/getting-started.xml?r1=1.1&r2=1.2&diff_format=u
Index: peardoc/en/package/webservices/services-geonames/getting-started.xml
diff -u peardoc/en/package/webservices/services-geonames/getting-started.xml:1.1 peardoc/en/package/webservices/services-geonames/getting-started.xml:1.2
--- peardoc/en/package/webservices/services-geonames/getting-started.xml:1.1	Fri Dec 19 17:30:45 2008
+++ peardoc/en/package/webservices/services-geonames/getting-started.xml	Fri Jan 23 14:06:34 2009
@@ -7,7 +7,7 @@
 >
  <refnamediv>
   <refname>Getting started</refname>
-  <refpurpose>getting started with the <classname>Services_GeoNames</classname> package</refpurpose>
+  <refpurpose>getting started with the <package>Services_GeoNames</package> package</refpurpose>
  </refnamediv>
  <refsection><info><title>Instanciating the <classname>Services_GeoNames</classname> class</title></info>
   <para>
@@ -365,7 +365,7 @@
       </entry>
       <entry></entry>
       <entry>HTTP_Request2</entry>
-      <entry>returns the Services_GeoNames request instance</entry>
+      <entry>returns the HTTP_Request2 request instance</entry>
      </row>
      <row>
       <entry>
@@ -373,17 +373,106 @@
       </entry>
       <entry>HTTP_Request2</entry>
       <entry></entry>
-      <entry>sets the Services_GeoNames request instance</entry>
+      <entry>sets the HTTP_Request2 request instance</entry>
      </row>
     </tbody>
    </tgroup>
   </table>
  </refsection>
 
+ <refsection><info><title>Handling exceptions</title></info>
+  <para>
+   <package>Services_GeoNames</package> always raise either a 
+   <classname>Services_GeoNames_Exception</classname> or a
+   <classname>Services_GeoNames_HTTPException</classname> instance, if you
+   don't care of fine grained exceptions, you can just catch the 
+   <classname>Services_GeoNames_Exception</classname>, as it's the parent class
+   of the  <classname>Services_GeoNames_HTTPException</classname>.
+
+   Here's an example of fine grained exception handling:
+   <programlisting role="php">
+   <![CDATA[
+<?php
+
+require_once 'Services/GeoNames.php';
+
+$geo = new Services_GeoNames();
+
+// now geonames uses your url
+try {
+    $children = $geo->children(3175395);
+} catch (Services_GeoNames_HTTPException $exc) {
+    // an http error occured
+    echo "HTTP error: " . $exc->getMessage();
+} catch (Services_GeoNames_Exception $exc) {
+    // a programming error or an api error occured
+    echo "API error: " . $exc->getMessage();
+}
+
+?>
+   ]]>
+   </programlisting>
+  </para>
+ </refsection>
+
+ <refsection><info><title>Changing the default service url and adding failover servers</title></info>
+  <para>
+   If for some reason you need to change the web service url, you can do the
+   following: 
+   <programlisting role="php">
+   <![CDATA[
+<?php
+
+require_once 'Services/GeoNames.php';
+
+$geo = new Services_GeoNames();
+$geo->url = 'http://alternate.geonames.org';
+
+// now geonames uses your url
+try {
+    $children = $geo->children(3175395);
+} catch (Services_GeoNames_Exception $exc) {
+    echo "Failed: " . $exc->getMessage();
+}
+
+?>
+   ]]>
+   </programlisting>
+  </para>
+  <para>
+   If you need high availability or if you are using the commercial version of
+   the web services, <package>Services_GeoNames</package> allows you to specify
+   an array of failover servers, you would just do:
+   <programlisting role="php">
+   <![CDATA[
+<?php
+
+require_once 'Services/GeoNames.php';
+
+$geo = new Services_GeoNames();
+$geo->failoverServers[] = 'http://failover1.geonames.org';
+$geo->failoverServers[] = 'http://failover2.geonames.org';
+$geo->failoverServers[] = 'http://failover3.geonames.org';
+
+// now geonames will try the main url and if it fails, it will loop through
+// the failovers servers you have just configured
+try {
+    $children = $geo->children(3175395);
+} catch (Services_GeoNames_Exception $exc) {
+    echo "Failed: " . $exc->getMessage();
+}
+
+?>
+   ]]>
+   </programlisting>
+  </para>
+ </refsection>
+
  <refsection><info><title>Customizing the http request</title></info>
   <para>
-   If for some reason you need a custom request, for example if you are behind
-   a proxy, you can modify the Services_GeoNames request instance, for example: 
+   If you need a custom request, for example if you are behind a proxy,
+   you can modify the <classname>Services_GeoNames</classname> request
+   instance, for example: 
    <programlisting role="php">
    <![CDATA[
 <?php
@@ -398,7 +487,11 @@
 ));
 
 // now geonames uses your proxy
-$children = $geo->children(3175395);
+try {
+    $children = $geo->children(3175395);
+} catch (Services_GeoNames_Exception $exc) {
+    echo "Failed: " . $exc->getMessage();
+}
 
 ?>
    ]]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.