PHP with XML
Get code in text file
<?php
/*
NEEDS A QUERY STRING: READ THE RULES ON WHAT COMBINATIONS OF VALUES ARE ALLOWED...
If you get errors, please ready about HTTP status codes
at http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
****** DON'T FORGET TO IMPLEMENT YOUR OWN ERROR HANDLING *******
Use your own preferred try/catch.
While it won't happen often, the API can go down at any time. It is therefore wise to
preceed ALL calls with a call to the "status" service.
The URL is https://services.cro.ie/cws/status
It does not need any auth header, so a quick call to it is all that is needed.
You should check the value of "ServicesRunning". If it is false, then it means the
service is off-line.
****************************************************************
Examples (restrictions apply with test api key):
Search for Google. Show a max of 10 rows. Both business names and Companies:
http://localhost/testxml.php?company_name=google&max=10&company_bus_ind=e
Search for Google business names only:
http://localhost/testxml.php?company_name=google&company_bus_ind=b
Search for ryanair companies and business names on dawson street:
http://localhost/testxml.php?company_name=ryanair&address=dawson%20street&company_bus_ind=e
Search for number 83740. We don't know if we are looking for a company or business,
so supply E. Otherwise, only companies would be searched:
http://localhost/testxml.php?company_num=83740&company_bus_ind=e
*/
$company_name = $_GET["company_name"];
$company_num = $_GET["company_num"];
$company_bus_ind = $_GET["company_bus_ind"];
$skip = $_GET["skip"];
$max = $_GET["max"];
$address = $_GET["address"];
$searchType = $_GET["searchType"];// If left blank, default is 2 (Starts with). READ THE MANUAL.
$sortBy = $_GET["sortby"];
$sortDir = $_GET["sortdir"];
// Let's keep the the data in array, and then encode the whole lot.
$testdata = array ("company_name"=>$company_name,
"company_num"=>$company_num,
"company_bus_ind"=>$company_bus_ind,
"address"=>$address,
"skip"=>$skip,
"max"=>$max,
"searchType"=>$searchType,
"sortBy"=>$sortBy,
"sortDir"=>$sortDir,
"htmlEnc"=>"1");
// Encode everything that will be sent to query string.
$encoded = '';
foreach($testdata as $name => $value){
$encoded .= urlencode($name).'='.urlencode($value).'&';
}
// chop off the last ampersand
$encoded = substr($encoded, 0, strlen($encoded)-1);
echo '<p>The query string we are going to send is: </p>';
echo "<h4>". $encoded ."</h4>";
$ch = curl_init();
$url = "https://services.cro.ie/cws/companies?" . $encoded;
// base64_encode email_address:api_key, preceeded with "Basic ".
// Use the exact email address you signed up with, values are case sensitive.
$headers = array( "Authorization: Basic ".base64_encode("[email protected]:da093a04-c9d7-46d7-9c83-9c9f8630d5e0"),
"Content-Type: application/xml",
"charset: utf-8");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// curl_setopt($ch, CURLOPT_PROXY, 'http://ip of your proxy:8080'); // if you need to go through a proxy
curl_setopt($ch, CURLOPT_FAILONERROR,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 0);
$response = curl_exec($ch);
// Some values from the header if want to take a look...
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$headerOut = curl_getinfo($ch, CURLINFO_HEADER_OUT);
echo $code.'<p>'.$headerOut.'</p>';
// Don't forget to close handle.
curl_close($ch);
// To view the data in its entirety:
// print ("<pre>");
// print_r($response);
// print ("</pre>");
echo "<h4>Results: </h4>";
// To handle XML...
$oXML = new SimpleXMLElement($response);
// Please READ THE DOCUMENTATION on the list of fields avaiable:
// ------->>>> https://services.cro.ie/datadict.aspx
foreach($oXML->Company as $oDoc){
// Let's just show the name, first line of address, and the primary key ,
// i.e. company num + comp business indicator:
$primarykey = $oDoc->company_num.'/'.$oDoc->company_bus_ind;
$company_name = $oDoc->company_name;
$addr1 = $oDoc->company_addr_1;
$addr2 = $oDoc->company_addr_2;
print_r ($primarykey.'<br />'.
$company_name.'<br .>'.$addr1.' '.$addr2.'<br /><br />' );
print_r ("===========================<br />");
}
?>