• Publicidad

Cliente PHP para consumir servicios web en Perl usando WSDL

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Cliente PHP para consumir servicios web en Perl usando WSDL

Notapor AlbertB » 2012-05-21 15:50 @701

Hola.

Soy nuevo en esto de los servicios web y he comenzado con Perl. Ya tengo publicados algunos servicios web en Perl que con un cliente Perl me funcionan bien, pero cuando genero el WSDL para consumir el servicio con PHP, no me funciona bien, o no me funciona nada.

El código que utilizo para generar el WSDL es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. use WSDL::Generator;
  3. my $init = {
  4.     'schema_namesp' => 'http://10.53.9.8:8079/Webservice.xsd',
  5.     'services'      => 'Webservice',
  6.     'service_name'  => 'Webservice',
  7.     'target_namesp' => 'http://10.53.9.8:8079/Webservice.wsdl',
  8.     'documentation' => 'Servicio Web de Prueba',
  9.     'location'      => 'http://10.53.9.8:8079/Webservice'
  10. };
  11. my $w = WSDL::Generator->new($init);
  12. Webservice->ultimasAdquisiciones();
  13. print $w->get(Webservice);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Al ejecutar el cliente PHP me dice que el documento WSDL no es
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
"PHP fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in cliente.php:8
Stack trace:
#0 cliente.php(8): SoapClient->__call('ultimas adquisiciones',array)
#1 {main}
thrown in cliente.php on line 8"
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿¿¿¿Alguien puede por favor decirme qué hacer????

En algún momento le hice cambios manuales al WSDL y me da otros errores como que no encuentra la función o no encuentra el pm en @INC...
AlbertB
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-05-21 15:18 @679

Publicidad

Re: Cliente PHP para consumir servicios web en Perl usando W

Notapor explorer » 2012-05-21 16:39 @736

Bienvenido a los foros de Perl en Español, AlbertB.

El error dice que no se ha recibido un XML. ¿Qué se ha recibido en su lugar?

Por estos foros hay algunos ejemplos de WSDL. Usa el sistema de búsqueda.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cliente PHP para consumir servicios web en Perl usando W

Notapor AlbertB » 2012-05-22 15:11 @674

Ya ese error lo corregí, igual recibía el xml pero algo pasaba que no lo entendía, luego de unos cambios quedó resuelto, ahora me da otro error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
PHP Fatal error: Uncaugth SoapFault exception: [soap:Client] SoapAction shall match 'uri#method' if present (got 'urn:ws_webserviceAction', expected 'urn:webservice#ultimasAdquisiciones') in cliente.php:13
Stack trace:
#0 cliente.php(13): SoapClient->__call('ultimasAdquisiciones',Array)
#1{main} thrown in cliente.php on line 13
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El cliente php tiene el siguiente código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. <?php
  2. $ws_cliente = new SoapClient("http://10.53.9.8/webservice.wsdl",array());
  3.  
  4. $ver=array();
  5. $adq=array();
  6. $ver = $ws_cliente->__call("ultimasAdquisiciones",$adq);
  7. //echo "<pre>";
  8.         print_r($ver);
  9. ?>
Coloreado en 0.020 segundos, usando GeSHi 1.0.8.4


Ya cambié en el wsdl la línea
<soap:operation style="rpc" soapAction="urn:ws_webserviceAction"/>
por
<soap:operation style="rpc" soapAction="urn:webservice#ultimasAdquisiciones"/>
pero el error se mantiene igual.

Yo creo que lo que necesito es la manera de crear un wsdl que me funcione bien. ¿Existe alguna otra vía? o ¿qué puedo hacer para que este me funcione?

El wsdl que actualmente uso es este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0"?>
  2. <!-- webserviceDL file generated by Zend Studio. -->
  3. <definitions name="webservice" targetNamespace="urn:webservice"
  4. xmlns="http://schemas.xmlsoap.org/wsdl/"
  5. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  6. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  7. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  8. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  9. xmlns:typens="urn:webservice"
  10. >
  11.  
  12. <types>
  13.         <xsd:schema targetNamespace="urn:webservice">
  14.                 <xsd:complexType name="anyTypeArray">
  15.                         <xsd:complexContent>
  16.                                 <xsd:restriction base="soapenc:Array">
  17.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  18.                                 </xsd:restriction>
  19.                         </xsd:complexContent>
  20.                 </xsd:complexType>
  21.        
  22.                 <xsd:complexType name="anyTypeArray">
  23.                         <xsd:complexContent>
  24.                                 <xsd:restriction base="soapenc:Array">
  25.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  26.                                 </xsd:restriction>
  27.                         </xsd:complexContent>
  28.                 </xsd:complexType>
  29.        
  30.                 <xsd:complexType name="anyTypeArray">
  31.                         <xsd:complexContent>
  32.                                 <xsd:restriction base="soapenc:Array">
  33.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  34.                                 </xsd:restriction>
  35.                         </xsd:complexContent>
  36.                 </xsd:complexType>
  37.        
  38.                 <xsd:complexType name="anyTypeArray">
  39.                         <xsd:complexContent>
  40.                                 <xsd:restriction base="soapenc:Array">
  41.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  42.                                 </xsd:restriction>
  43.                         </xsd:complexContent>
  44.                 </xsd:complexType>
  45.        
  46.                 <xsd:complexType name="anyTypeArray">
  47.                         <xsd:complexContent>
  48.                                 <xsd:restriction base="soapenc:Array">
  49.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  50.                                 </xsd:restriction>
  51.                         </xsd:complexContent>
  52.                 </xsd:complexType>
  53.                
  54.                 <xsd:complexType name="anyTypeArray">
  55.                         <xsd:complexContent>
  56.                                 <xsd:restriction base="soapenc:Array">
  57.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  58.                                 </xsd:restriction>
  59.                         </xsd:complexContent>
  60.                 </xsd:complexType>
  61.                
  62.                 <xsd:complexType name="anyTypeArray">
  63.                         <xsd:complexContent>
  64.                                 <xsd:restriction base="soapenc:Array">
  65.                                         <xsd:attribute ref="soapenc:arrayType" webservicedl:arrayType="xsd:anyType[]" />
  66.                                 </xsd:restriction>
  67.                         </xsd:complexContent>
  68.                 </xsd:complexType>
  69.                
  70.         </xsd:schema>
  71. </types>
  72.  
  73. <message name="ultimasAdquisiciones" />
  74. <message name="ultimasAdquisicionesResponse">
  75.         <part name="ultimasAdquisicionesReturn" type="typens:AdqArray" />
  76. </message>
  77.  
  78. <portType name="ws_webservicePortType">
  79.                 <operation name="ultimasAdquisiciones">
  80.                         <documentation> ultimasAdquisiciones </documentation>
  81.                         <input message="typens:ultimasAdquisiciones" />
  82.                         <output message="typens:ultimasAdquisicionesResponse" />
  83.                 </operation>
  84.  
  85. </portType>
  86.        
  87. <binding name="ws_webserviceBinding" type="typens:ws_webservicePortType">
  88.                 <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  89.                
  90.                 <operation name="ultimasAdquisiciones">
  91.                         <soap:operation style="rpc" soapAction="urn:webservice#ultimasAdquisiciones"/>
  92.                         <input>
  93.                                 <soap:body namespace="urn:webservice" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
  94.                         </input>
  95.                         <output>
  96.                                 <soap:body namespace="urn:webservice" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
  97.                         </output>
  98.                 </operation>
  99.                        
  100. </binding>
  101.        
  102.         <service name="webservice">
  103.                 <documentation>Servicio Web de Prueba</documentation>
  104.                 <port name="ws_webservicePort" binding="typens:ws_webserviceBinding">
  105.                         <soap:address location="http://holiness:8079"/>
  106.                 </port>
  107.         </service>
  108.                
  109. </definitions>
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Otras veces me ha dado error analizando el wsdl. Ya creo que he tenido n-errores diferentes. Please, necesito ayuda urgente, necesito generar un wsdl que me funcione para consumir el servicio con cualquier otro lenguaje. Ya con Perl todo me funciona bien, pero necesito que otros lenguajes lo consuman, ya que los sistemas que deben ser clientes están en PHP y Java. Si alguien tiene una idea aunque implique un nuevo wsdl, please, la necesito. Ya he probado tambien con Pod::WSDL pero no me funcionó y el que me genera el WSDL::Generator tampoco me sirvió, ya este que estoy utilizando tiene varios que los he tenido que hacer manual pero no entiendo mucho sobre el tema y todas las componentes del documento.
Última edición por explorer el 2012-05-22 15:27 @685, editado 1 vez en total
Razón: Marcado Perl, XML y Texto
AlbertB
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-05-21 15:18 @679


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados