WoRMS banner
Add search provider Add provider
Twitter: Latest updates @WRMarineSpecies
[Back]

Calling the WoRMS webservice from ColdFusion/Railo/Lucee

The following scripts are applicable to the commercial web application ColdFusion (Adobe) and it's open source equivalents of Railo and Lucee.
The scripts have been tested on Lucee which is a sucessor to Railo.

Step 1: Install Lucee
Go to www.lucee.org, download & install Lucee (Windows or Linux). The Linux version in particular will link Lucee to Apache so the webservices can be called on port 80.

Step 2: Create the script and save it as worms_test.cfm
Save it in a web accessable location.
<cfset worms_endpoint = 'http://marinespecies.org/aphia.php?p=soap&wsdl=1'>

<cfset sp_name = 'Aptenodytes'>

<cfinvoke
  webservice="#worms_endpoint#"
  method="getAphiaId"
  returnvariable="AphiaID">
    <cfinvokeargument name="scientificname" value="#sp_name#"/>
    <cfinvokeargument name="marine_only" value="true"/>
</cfinvoke>

<p>Example 1. method getAphiaId - find aphiaId for 'Aptenodytes' - returns <cfoutput>#AphiaID#</cfoutput></p>

<cfset  tid = 206442>
<cfinvoke
  webservice="#worms_endpoint#"
  method="getAphiaNameByID"
  returnvariable="taxa_name">
    <cfinvokeargument name="AphiaID" value="#tid#"/>
</cfinvoke>

<p>Example 2. method getAphiaNameByID - find name for AphiaID 206442 - returns <cfoutput>#taxa_name#</cfoutput></p>

<p>Example 3. method getAphiaRecordByID - find full record for AphiaID 235339 and place it into a data structure

<cfset  tid = 235339>
<cfinvoke
  webservice="#worms_endpoint#"
  method="getAphiaRecordByID"
  returnvariable="AphiaRecords">
    <cfinvokeargument name="AphiaID" value="#tid#"/>
</cfinvoke>

<cfset data.kingdom = AphiaRecords.getKingdom()>
<cfset data.phylum  = AphiaRecords.getPhylum()>
<cftry><cfset data.class = AphiaRecords.getClass()><cfcatch></cfcatch></cftry>
<cfset data.order = AphiaRecords.getOrder()>
<cfset data.family = AphiaRecords.getFamily()>
<cfset data.genus = AphiaRecords.getGenus()>
<cfset data.Scientificname = AphiaRecords.getScientificname()>
<cfset data.authority = AphiaRecords.getValid_authority()>
<cfset data.rank = AphiaRecords.getRank()>
<cfset data.status = AphiaRecords.getStatus()>
<cfset data.url_string = AphiaRecords.getUrl()>
<cfset data.lsid = AphiaRecords.getLsid()>

<cfdump var="#data#">

<p>Example 4. method getAphiaRecords - find multiple records for 'Pygoscelis'

<cfset sp_name = 'Pygoscelis'>

<cfinvoke
  webservice="#worms_endpoint#"
  method="getAphiaRecords"
  returnvariable="AphiaRecords">
    <cfinvokeargument name="scientificname" value="#sp_name#"/>
    <cfinvokeargument name="like" value="true"/>
    <cfinvokeargument name="fuzzy" value="true"/>
    <cfinvokeargument name="marine_only" value="true"/>
    <cfinvokeargument name="offset" value="1"/>
</cfinvoke>

 - Number of getAphiaRecords found = <cfoutput>#arrayLen(AphiaRecords)#</cfoutput>


Step 3: Run the script
Invoke using Apache web server i.e. http://127.0.0.1/worms_test.cfm

Download this example.

Credits for this tutorial go to Dave Watts (Data Centre, CSIRO Oceans and Atmosphere, Australia)