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
Share on other sites

  • 1 month later...
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.