Tema: Nusoap PHP
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/08/2018, 12:06
tuadmin
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
De acuerdo Respuesta: Nusoap PHP

Cita:
Iniciado por roys1985 Ver Mensaje
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 original
  1. xmlns: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);