Foros del Web » Programando para Internet » PHP »

Nusoap PHP

Estas en el tema de Nusoap PHP en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/07/2018, 08:53
 
Fecha de Ingreso: febrero-2011
Mensajes: 100
Antigüedad: 13 años, 2 meses
Puntos: 0
Nusoap PHP

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
  #2 (permalink)  
Antiguo 30/07/2018, 10:14
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Nusoap PHP

probaste, cambiando la version de soap, recuerda que existe la SOAP_1_1 y la SOAP_1_2
  #3 (permalink)  
Antiguo 02/08/2018, 10:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 100
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Nusoap PHP

$client = new nusoap_client($wsdl,"wsdl",array('soap_version'=>S OAP_1_1,'cache_wsdl' => WSDL_CACHE_NONE), false, false, false, false, 100000, 100000);

De todas formas da el error, estoy buscando las versiones, no iba pensado en eso, gracias de todos modos

La libreria es nusoap 1.114
  #4 (permalink)  
Antiguo 03/08/2018, 17:35
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Nusoap PHP

Cita:
Iniciado por roys1985 Ver Mensaje
$client = new nusoap_client($wsdl,"wsdl",array('soap_version'=>S OAP_1_1,'cache_wsdl' => WSDL_CACHE_NONE), false, false, false, false, 100000, 100000);

De todas formas da el error, estoy buscando las versiones, no iba pensado en eso, gracias de todos modos

La libreria es nusoap 1.114
en todo caso NUSOAP se apoya en las librerias que PHP ya tiene habilitada como extension, puedes dar un vistazo

http://php.net/manual/es/class.soapclient.php

en todo caso verifica que el servicio, esta haciendo todo correctamente, prueba usar un TEST ONLINE del servicio SOAP


http://www.soapclient.com/soaptest.html
  #5 (permalink)  
Antiguo 06/08/2018, 13:43
 
Fecha de Ingreso: febrero-2011
Mensajes: 100
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Nusoap PHP

Gracias, pero aún no encuentro la forma, el REQUEST sigue enviado SOAP-ENV, de todas formas sigo leyendo el core de soap php para ver si en algun lado se define los prefijos de cabeceras

Saludos y gracias
  #6 (permalink)  
Antiguo 07/08/2018, 12:06
 
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);

Etiquetas: nusoap
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:59.