Odchycení výjimky pro SoapClient

dj.kure
Člen | 70
+
0
-

Ahoj,

jsem asi blázen, ale nedaří se mi odchytit výjimku ve stavu, kdy se SoapClientu nedaří připojit ke vzdálenému serveru/zdroji. Server je aktuálně vypnut a já potřebuji tento stav odchytit a zobrazit adekvátní hlášku.
Aktuálně troskotám na tomto kódu:

		try {
$this->connection = new \SoapClient("http://10.1.31.51:8080/wsdl/IAcontoService", array(
        "exceptions" => true,
    ));
} catch (\SoapFault $e) {
    $this->connection = array("state" => false, "errorMessage" => $e->getMessage());
			// docasne
			dump($this->connection);
			exit();
}

S tímto výsledkem na Tracy:

SoapClient::SoapClient(http://10.1.31.51:8080/wsdl/IAcontoService): failed to open stream: Pokus o pipojen selhal, protoe pipojen strana v asovm intervalu dn neodpovdla, nebo vytvoen pipojen selhalo, protoe neodpovdl pipojen hostitel.

Namísto dumpu pole, kde by měla být samotná hláška a stav :-(

dj.kure
Člen | 70
+
0
-

Tak zatím to řeším tedy nehezkým dvojím ověřováním, ale není to to, co bych chtěl :-(

		if ($this->checkConnection())
	{
    try {
        $this->connection = new \SoapClient("http://10.1.31.51:8080/wsdl/IAcontoService", array(
            'exceptions' => true,
        ));
    } catch (\Exception $e) {
        $this->connection = false;
    }
}
else {
    $this->connection = false;
}

Kde funkce checkConnection() vypadá takto:

public function checkConnection()
{
    $ch = curl_init("http://10.1.31.51:8080/wsdl/IAcontoService");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);
    curl_exec($ch);
    return curl_errno($ch) ? false : true;
}
Pavel Kravčík
Člen | 1180
+
0
-

A není to náhodou obyčejná Exception? Mělo by stačit přidat více bloků catch.

dj.kure
Člen | 70
+
0
-

Díky za komentář, jak si můžeš všimnout v mém komentáři, tak jsem už SoapFault nahradil za klasickou Exception, ale bez výsledku. Stále stejný problém, stále bez odchycení chyby. Zatím se tak trochu drbu levou rukou za pravým uchem, takže se nejdříve snažím přes CURL připojit ke zdroji a když se nedaří, tak rovnou chytnu chybu a celý SOAP obejdu, ale moc se mi tohle řešení nelíbí :(

Pavel Kravčík
Člen | 1180
+
+1
-

Tak to nebude Exception, ale warning. :)

dj.kure
Člen | 70
+
0
-

No jo, vždyť to říkám, že jsem mimo. Díky za posun.