<?php

require_once "../../lib/Dklab/SoapClient.php";
$client = new Dklab_SoapClient(null, array('location' => "http://microsoft.com:8876", 'uri' => 'urn:myschema', 'response_validator' => 'responseValidator', 'timeout' => 1));
echo "<pre>";
try {
    $client->someMethod();
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}
/**
 * Must return true if the response is valid, false if not and we need 
 * to reconnect, or throw an exception if attemts limit is reached.
 */
function responseValidator($response, $numberOfAttempt)
{
    if ($response['http_code'] != 200 || !strlen($response['body'])) {
        if ($numberOfAttempt < 3) {
            echo date("r") . ": Failed after {$numberOfAttempt} attempts, retrying...\n";
            return false;
        } else {
            throw new SoapFault("Client", date("r") . ": Exception: failed after {$numberOfAttempt} attempts!");
        }
    }
    return true;
}