Jump to content

Calling SOAP / XML Response Experts


ryanschefke

Recommended Posts

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

  • 1 month later...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.