Sto tentando di scrivere uno script PHP che si connetterà al client SOAP per l'interfaccia SightMax. Con il codice qui sotto sono in grado di stampare un elenco di funzioni disponibili, tuttavia quando provo a chiamare qualsiasi funzione sto ottenendo il seguente errore.Errore irreversibile PHP: "L'azione SOAP specificata nel messaggio, '', non corrisponde all'azione HTTP SOAP"
<?php
$client = new SoapClient('http://domain.com/SightMaxWebServices/SightMaxWebService.svc?wsdl', array('soap_version' => SOAP_1_2));
var_dump($client->__getFunctions());
$result = $client->__call("GetSiteSummary", array());
echo "<pre>";
print_r($result);
echo "</pre>";
?>
Fatal error: Uncaught SoapFault exception: [s:Sender] The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'SmartMax.SightMax.Agent.Operator/IRemotedWebsiteAdministrator/GetSiteSummary'. in test2.php:7 Stack trace: #0 test2.php(7): SoapClient->__call('GetSiteSummary', Array) #1 {main} thrown in test2.php on line 7
Sono stato alla ricerca di questo errore per gli ultimi due giorni e ho letto diversi articoli affermando possibili problemi. Da quello che ho capito, questo errore si verifica perché il client SOAP è configurato per wsHttpBinding e il build nel client SOAP per PHP non supporta wsHttpBinding o ho bisogno di specificare specificamente l'azione SOAP.
Qualcuno può far luce su questo per me? Si prega di tenere a mente mentre sono esperto di PHP che lavora con SOAP è nuovo per me, quindi passo dopo passo sono molto utili.
Grazie in anticipo.
Hev you you provato a omettere il parametro version in 'new SoapClient'? Soap 1.2 non usa l'header azione SOAP, 1.1 lo fa. Potrebbe essere, che il server comprenda solo 1.1? –
Quando rimuovo il parametro di versione SOAP_1_2, viene visualizzato un altro errore Errore irreversibile: eccezione SoapFault Uncaught: [HTTP] Impossibile elaborare il messaggio perché il tipo di contenuto "text/xml; charset = utf-8 'non era il tipo atteso' application/soap + xml; charset = utf-8' . in test2.php: 5 Traccia stack: # 0 [funzione interna]: SoapClient -> __ doRequest ('__ call (' GetSiteSummary ', Array) # 2 {main} generato in/var/www/tools/html/whichonchat/test2. php on line 5 –