Search code examples
phpweb-servicessoapwsdl

Call with Post Method


From when I get result with SOAP call var_dump as follows:

WSDL map

stdClass Object ( [Sites] => Array ( [0] => stdClass Object ( [id] => 102728 [siteId] => 0 )

I would like to achieve call Sites array to display data:

Post method call the SOAP Data

<?php 


$opts = array(
            'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false)
        );`enter code here`

// SOAP 1.2 client
$params = array (
    'encoding' => 'UTF-8', 
    'verifypeer' => false, 
    'verifyhost' => false, 
    'soap_version' => SOAP_1_2, 
    'trace' => 1, 'exceptions' => 1, 
    "connection_timeout" => 180, 
    'stream_context' => stream_context_create($opts) );

//disable wsdl cache 
ini_set("soap.wsdl_cache_enabled", "0"); 


$client = new SoapClient("http://www.example.com?WSDL",$params);

$result1=$client->getSiteInfo();

$zone = $result1->Sites;
if(isset($_POST['rayat'])){
    echo $zone;
}
 else {


?>

<form action="index.php" method="post">

<input id="rayat" name="rayat" size="10" type="text" value=""  />
<input id="submit" name="submit" type="submit" value="submit" />

</form>

    <?php 

    //$param = array('isbn'=>'0385503954');
    // define path to server application
    $opts = array(
                'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false)
            );

    // SOAP 1.2 client
    $params = array (
        'encoding' => 'UTF-8', 
        'verifypeer' => false, 
        'verifyhost' => false, 
        'soap_version' => SOAP_1_2, 
        'trace' => 1, 'exceptions' => 1, 
        "connection_timeout" => 180, 
        'stream_context' => stream_context_create($opts) );

    //disable wsdl cache 
    ini_set("soap.wsdl_cache_enabled", "0"); 

    $server = '';

     
    $client = new SoapClient("http://www.example.com?WSDL",$params);

    $result1=$client->getSiteInfo();
      
    $zone = $result1->Sites;
    if(isset($_POST['rayat'])){
        echo $zone;
    }
     else {
        

    ?>


    <form action="champ.php" method="post">

    <input id="rayat" name="rayat" size="10" type="text" value=""  />
    <input id="submit" name="submit" type="submit" value="submit" />

    </form>

    <?php
     }
     ?>
     
<?php } ?> Above code give me result is 'Array'

Solution

  • The SOAP results are an array of objects as your var_dump() is telling you. If you are saying that your SOAP call will always only return one result, you can cheat a little by doing something like:

        $zone = $result1->Sites;
        if(isset($_POST['rayat'])){
            echo 'ID: ' . $zone[0]->id . '<br>SiteID: ' . $zone[0]->siteid;
        } else {
        ...