Cita:
Iniciado por roys1985
Hola estimados, tengo el siguiente problema si me pueden ayudar,
al enviar una petición nusoap envía esta estructura
<SOAP-ENV:ENVELOPE>
y el servidor espera que envíe esta estructura
<soapenv:Envelope>
¿como puedo cambiar el SOAP-ENV por soapenv
Gracias
bueno antes de proponerte una solucion, queria consultarte, estas seguro de que el servidor espera
<soapenv:Envelope>????
por que la mayoria de las librerias para java , delphi, c# , python, no les importa el tag, si tiene los debidos NS (namespaces) en los atributos del xml,
Código XML:
Ver originalxmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
ese es el namespace , pero bueno si no pillas la solucion para darle un FIX al cliente PHP tienes que sobreescribir su funcion interna, se hace extendiendo la clase del soapClient, y luego creando una funcion, que sobreescriba la del padre y con el puedas manipular el request
Código PHP:
<?php
class SoapClientFixed extends SoapClient
{
public function __doRequest($request, $location, $action, $version, $one_way = NULL)
{
//creamos un archivo log para ver el origen el request
file_put_contents(__DIR__ .'/soap_log.txt', $request);
//cambiamos el SOAP-ENV por 'soapenv' en el request
$request = str_replace('SOAP-ENV','soapenv', $request);
return parent::__doRequest($request, $location, $action, $version);
}
}
y luego para usarlo
Código PHP:
<?php
$client = new SoapClientDebug( 'api.wsdl' , $opts);
$client->$function($params);