Hello,
I am playing with an API from a company that makes a SOAP request and an XML response is sent back. I am not sure how to use/interpret the response and need some help. You can see the output here: http://www.leadliaison.com/test_hooversAPI.php.
The script is below, which dumps this output on the above link to the screen.
For now, I just want to print something simple like annual sales, which according to the providers API has the XML output parameters of: \return\resultSet\hit\company-results\finsales
<form method="post" action="test_hooversAPI.php">
<table border=0>
<tr>
<td>
<input type="radio" name="methodName" value="FindCompanyByKeyword">FindCompanyByKeyword
</td>
</tr>
<tr>
<td>
<input type="radio" name="methodName" value="AdvancedCompanySearch">AdvancedCompanySearch
</td>
</tr>
<tr>
<td>
<input type="radio" name="methodName" value="GetCompanyDetail">GetCompanyDetail
</td>
</tr>
<tr>
<td>
<input type="radio" name="methodName" value="GetAdvancedSearchLookups">GetAdvancedSearchLookups
</td>
</tr>
<tr>
<td>
<input type="radio" name="methodName" value="GetPersonDetail">GetPersonDetail
</td>
</tr>
<tr>
<td>
<input type="radio" name="methodName" value="AdvancedPersonSearch">AdvancedPersonSearch
</td>
</tr>
<tr>
<td>
<input type="radio" name="methodName" value="FindPersonByKeyword">FindPersonByKeyword
</td>
</tr>
<tr>
<td>
<input type="submit" value="Submit">
</td>
</tr>
</table>
</form>
<br/>
<hr/>
<br/>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
print($_POST['methodName']);
try
{
//Create your SoapClient and point to Hapi.wsdl
$client = new SoapClient(
'http://hapi-dev.hoovers.com/axis2/Hapi.wsdl',
array('trace' => true, 'exceptions' => true)
);
//Create the SoapHeader once
//The header contains your API KEY
$apiKeySoapHeader = new SoapHeader('http://webservice.hoovers.com', 'API-KEY', 'MYKEYHERE');
//Call the chosen web service
if($_POST['methodName'] == 'FindCompanyByKeyword')
{
//Create find company by keyword params
$parameters = array(
"keyword" => 'Hoover\'s Inc'
);
}
elseif($_POST['methodName'] == 'AdvancedCompanySearch')
{
//Search for companies that have 10 to 100 employees in Dallas
$parameters = array(
"bal" => array(
"companysize" => array(
"employeesFrom" => 10,
"employeesTo" => 100
),
"location" => array(
"city" => 'Dallas'
)
)
);
}
elseif($_POST['methodName'] == 'GetCompanyDetail')
{
$parameters = array(
"uniqueId" => '809194728'
);
}
elseif($_POST['methodName'] == 'GetPersonDetail')
{
$parameters = array(
"uniqueId" => '2059663'
);
}
elseif($_POST['methodName'] == 'AdvancedPersonSearch')
{
$parameters = array(
"bal" => array(
"companysize" => array(
"employeesFrom" => 10,
"employeesTo" => 100
),
"location" => array(
"city" => 'Dallas'
)
)
);
}
elseif($_POST['methodName'] == 'FindPersonByKeyword')
{
$parameters = array(
"keyword" => 'Hoover\'s'
);
}
elseif($_POST['methodName'] == 'GetAdvancedSearchLookups')
{
//TODO: Might need to be NULL...wait until new version of HAPI goes to SoDevHAPI
$parameters = array();
}
//Use __soapCall instead of directly calling the method,
//as we must pass the API-KEY in the Header
$result = $client->__soapCall($_POST['methodName'],
array($parameters),
NULL,
$apiKeySoapHeader);
//Now that you have the result data, use it
//The data will come back as an object using the names defined in the WSDL
dump($result);
//echo $industries->return['sIAC'];
//echo $result['return']['industries']['sIAC'];
//echo "Name: " . $result->return->keyNumbers->fiscal-period . "\n";
//TEMP var_dump($result->return->resultSet);
}
catch (Exception $e)
{
print($e);
print($client->__getLastRequest());
}
}
?>
<?php
/////////////////
// Much thanks to the group on php.net
// Specific code taken from http://us3.php.net/manual/en/function.var-dump.php#80288
////////////////
////////////////////////////////////////////////////////
// Function: dump
// Inspired from: PHP.net Contributions
// Description: Helps with php debugging
function dump(&$var, $info = FALSE)
{
$scope = false;
$prefix = 'unique';
$suffix = 'value';
if($scope) $vals = $scope;
else $vals = $GLOBALS;
$old = $var;
$var = $new = $prefix.rand().$suffix; $vname = FALSE;
foreach($vals as $key => $val) if($val === $new) $vname = $key;
$var = $old;
echo "<pre style='margin: 0px 0px 10px 0px; display: block; background: white; color: black; font-family: Verdana; border: 1px solid #cccccc; padding: 5px; font-size: 10px; line-height: 13px;'>";
if($info != FALSE) echo "<b style='color: red;'>$info:</b><br>";
do_dump($var, '$'.$vname);
echo "</pre>";
}
////////////////////////////////////////////////////////
// Function: do_dump
// Inspired from: PHP.net Contributions
// Description: Better GI than print_r or var_dump
function do_dump(&$var, $var_name = NULL, $indent = NULL, $reference = NULL)
{
$do_dump_indent = "<span style='color:#eeeeee;'>|</span> ";
$reference = $reference.$var_name;
$keyvar = 'the_do_dump_recursion_protection_scheme'; $keyname = 'referenced_object_name';
if (is_array($var) && isset($var[$keyvar]))
{
$real_var = &$var[$keyvar];
$real_name = &$var[$keyname];
$type = ucfirst(gettype($real_var));
echo "$indent$var_name <span style='color:#a2a2a2'>$type</span> = <span style='color:#e87800;'>&$real_name</span><br>";
}
else
{
$var = array($keyvar => $var, $keyname => $reference);
$avar = &$var[$keyvar];
$type = ucfirst(gettype($avar));
if($type == "String") $type_color = "<span style='color:green'>";
elseif($type == "Integer") $type_color = "<span style='color:red'>";
elseif($type == "Double"){ $type_color = "<span style='color:#0099c5'>"; $type = "Float"; }
elseif($type == "Boolean") $type_color = "<span style='color:#92008d'>";
elseif($type == "NULL") $type_color = "<span style='color:black'>";
if(is_array($avar))
{
$count = count($avar);
echo "$indent" . ($var_name ? "$var_name => ":"") . "<span style='color:#a2a2a2'>$type ($count)</span><br>$indent(<br>";
$keys = array_keys($avar);
foreach($keys as $name)
{
$value = &$avar[$name];
do_dump($value, "['$name']", $indent.$do_dump_indent, $reference);
}
echo "$indent)<br>";
}
elseif(is_object($avar))
{
echo "$indent$var_name <span style='color:#a2a2a2'>$type</span><br>$indent(<br>";
foreach($avar as $name=>$value) do_dump($value, "$name", $indent.$do_dump_indent, $reference);
echo "$indent)<br>";
}
elseif(is_int($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";
elseif(is_string($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color\"$avar\"</span><br>";
elseif(is_float($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color$avar</span><br>";
elseif(is_bool($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $type_color".($avar == 1 ? "TRUE":"FALSE")."</span><br>";
elseif(is_null($avar)) echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> {$type_color}NULL</span><br>";
else echo "$indent$var_name = <span style='color:#a2a2a2'>$type(".strlen($avar).")</span> $avar<br>";
$var = $var[$keyvar];
}
}
?>