Foros del Web » Programando para Internet » PHP »

Servicio Web .WSDL

Estas en el tema de Servicio Web .WSDL en el foro de PHP en Foros del Web. Hola foreanos, tengo el siguiente problema, me enviaron dos archivos para consumir como WebServicio, uno es una extensión XSD y la otra WSDL, archivo.xsd archivo.wsdl ...
  #1 (permalink)  
Antiguo 10/01/2018, 07:37
 
Fecha de Ingreso: febrero-2011
Mensajes: 97
Antigüedad: 6 años, 11 meses
Puntos: 0
Servicio Web .WSDL

Hola foreanos, tengo el siguiente problema, me enviaron dos archivos para consumir como WebServicio, uno es una extensión XSD y la otra WSDL,

archivo.xsd
archivo.wsdl

he intentado de todas formas encapsular el servicio pero no me ha funcionado, también comentar que el servicio tiene prefijos, namespaces, osea la estructura del XML es esta

Código PHP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:fgp="RUTA_NAMESPACES">
<
soapenv:Body>
<
fgp:inicio>
 <
fgp:cuerpo>
    <
fgp:rut>19</fgp:rut>
    <
fgp:data>ertdddad</fgp:data>
 </
fgp:cuerpo>
</
fgp:inicio>
</
soapenv:Body>
</
soapenv:Envelope
Si invoco el archivo .WSDL del SoapUI puedo consumirlo sin problemas, pero cuando realizo en ecapsulamiento me arroja distintos errores, como SSL, NULO, mala estructura, etc etc. pero de todas formas no he podido, la forma tradicional que realizo es esta

He intentado invocando al método CALL (que siempre realizo) también con serializeEnvelope y send y también pasando parámetros por arreglo y string como estructura XML

setCredentials -> invoco este metodo porque tienen seguridad de transporte

Código PHP:
//Defino clase nusoap
$client = new nusoap_client($endPoint,"wsdl");
//paso credenciales
$client->setCredentials($login,$password'basic');

//Parametros
$param = array("fgp:cuerpo"=>array("fgp:rut"  =>  "19",
                                                        
"fgp:data => "ertdddad"));

//Intento invocación al método 1
$respuesta = $client->call("
inicio",$param);
//Intento invocación al método 2
$respuesta = $client->call("
inicio",$param,"RUTA_NAMESPACES","inicio",false); 
Intento 2

Código PHP:
//Defino clase nusoap
$client = new nusoap_client($endPoint,"wsdl");
//paso credenciales
$client->setCredentials($login,$password'basic');

//Parametros
$strXml='
 <fgp:cuerpo>
    <fgp:rut>19</fgp:rut>
    <fgp:data>ertdddad</fgp:data>
 </fgp:cuerpo>'
;


//Intento invocación al método 1
$dataXml $client->serializeEnvelope($strXml,false,array("fgp"=>"RUTA_NAMESPACES"),$style='rpc',$use='encoded',false);

result $client->send($dataXml ,$endPoint100000100000);

//Intento invocación al método 2
$dataXml $client->serializeEnvelope($strXml);

result $client->send($dataXml ,$endPoint100000100000); 
Ninguno de las formas me ha funcionado, primera vez que consumo un WSDL que los archivos estén en mi maquina, que tengan prefijos obligatorios

He intentado eliminar el WSDL new nusoap_client($endPoint,false) pero no llego fuera de la red, sólo de esta forma funciona


Utilizando

Nusoap v1.64
Php 5.2.9


Gracias si alguien ha realizado esto
  #2 (permalink)  
Antiguo 10/01/2018, 14:01
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 207
Antigüedad: 9 años
Puntos: 11
Respuesta: Servicio Web .WSDL

Yo consumo WebService SOAP con PHP puro (no uso nusoap):

Código PHP:
Ver original
  1. $cliente= new SoapClient("http://localhost:8080/url?wsdl",array('trace' => 1,'soap_version' => SOAP_1_1));
  2.     echo "Funciones del server SOAP: ";
  3.     var_dump($cliente->__getFunctions());
  4.     $arreglo=array('fromCurrency'=>"",'toCurrency'=>"");
  5.     echo "Parametros a enviar al web service:";
  6.     var_dump($arreglo);
  7.     $strResp = $cliente->__soapCall('conversionRate',array($arreglo));
  8.     echo "Objeto Respuesta:";
  9.     var_dump($strResp);
  10.     echo "Valor deseado(el nombre esta en el WSDL): \$strResp->conversionRateReturn = ".
  11.         $strResp->conversionRateReturn. "<br/>";



La zona horaria es GMT -6. Ahora son las 10:51.