Estoy intentando escribir un script PHP que se conectará al cliente SOAP para nuestra interfaz SightMax. Con el código a continuación, puedo imprimir una lista de funciones disponibles; sin embargo, cuando intento llamar a cualquier función, obtengo el siguiente error.Error grave de PHP: "La acción SOAP especificada en el mensaje '' no coincide con la acción 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
He estado investigando este error para el último par de días y he leído diferentes artículos que indican posibles problemas. Por lo que entiendo, este error se produce porque el cliente SOAP está configurado para wsHttpBinding y la compilación en el cliente SOAP para PHP no admite el wsHttpBinding o debo especificar específicamente la acción SOAP.
¿Alguien puede arrojar algo de luz sobre esto para mí? Tenga en cuenta que mientras soy versado en PHP, trabajar con SOAP es nuevo para mí, así que paso a paso son muy útiles.
Gracias de antemano.
Hev you intenté omitir el parámetro de versión en 'nuevo SoapClient'? Soap 1.2 no usa el encabezado de acción SOAP, 1.1 lo hace. Es posible que el servidor solo entienda 1.1. –
Cuando elimino el parámetro de versión SOAP_1_2 obtengo un error diferente Error fatal: excepción de SoapFault no capturada: [HTTP] No se puede procesar el mensaje porque el tipo de contenido 'text/xml; charset = utf-8 'no era el tipo esperado' application/soap + xml; charset = utf-8 '. en test2.php: 5 Stack trace: # 0 [función interna]: SoapClient -> __ doRequest ('__ call (' GetSiteSummary ', Array) # 2 {main} lanzado en/var/www/tools/html/whoseonchat/test2. php en la línea 5 –