ryanschefke Posted September 23, 2008 Share Posted September 23, 2008 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]; } } ?> Link to comment https://forums.phpfreaks.com/topic/125513-calling-soap-xml-response-experts/ Share on other sites More sharing options...
Q695 Posted October 30, 2008 Share Posted October 30, 2008 Try this out, because I had a very similar issue: if ($cost>=1) { if ($cost=abs($cost)) { $cost="$".$cost.".00"; } else { $cost="$".$cost."0"; } Link to comment https://forums.phpfreaks.com/topic/125513-calling-soap-xml-response-experts/#findComment-678178 Share on other sites More sharing options...
Q695 Posted October 30, 2008 Share Posted October 30, 2008 if ($cost>=1) { if ($cost==round($cost)) { $cost="$".$cost.".00"; } else { $cost="$".$cost."0"; } Link to comment https://forums.phpfreaks.com/topic/125513-calling-soap-xml-response-experts/#findComment-678197 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.