• Publicidad

PSGI y WSDL

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

PSGI y WSDL

Notapor Sebosin » 2013-11-27 06:07 @296

Buenos días.

Un saludo a todos los miembros de la lista.

Mi problema es que tengo estos dos ficheros:
Sintáxis: (marcas.psgi) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use WWW::Curl::easy;
  7. use WWW::Curl;
  8.  
  9. use Data::Dumper qw(Dumper);
  10. $Data::Dumper::Sortkeys = 1;
  11.  
  12. use Plack::Request;
  13.  
  14. my $app = sub {
  15.  
  16.         ### Pasándole los valores desde línea de comandos    
  17.         #shift;
  18.         #my $MARCA1 = shift;
  19.         #my $MARCA2 = shift;
  20.         #my $MARCA3 = shift;
  21.         #my $MARCA4 = shift;
  22.         #my $MARCA5 = shift;
  23.  
  24.         ### Pasándole los valores a pelo
  25.         #my $MARCA1 = "00106";
  26.         #my $MARCA2 = "00105";
  27.         #my $MARCA3 = "40202";
  28.  
  29.         ### Pasándole los valores desde el $env
  30.         my $env = shift;
  31.         my $request = Plack::Request->new($env);
  32.        
  33.         my $MARCA1 = "";
  34.         my $MARCA2 = "";
  35.         my $MARCA3 = "";
  36.         my $MARCA4 = "";
  37.         my $MARCA5 = "";
  38.  
  39.         if ($request->param('MARCA1')) {
  40.                 $MARCA1 = $request->param('MARCA1');
  41.         }
  42.         if ($request->param('MARCA2')) {
  43.                 $MARCA2 = $request->param('MARCA2');
  44.         }
  45.         if ($request->param('MARCA3')) {
  46.                 $MARCA3 = $request->param('MARCA3');
  47.         }
  48.         if ($request->param('MARCA4')) {
  49.                 $MARCA4 = $request->param('MARCA4');
  50.         }
  51.         if ($request->param('MARCA5')) {
  52.                 $MARCA5 = $request->param('MARCA5');
  53.         }
  54.        
  55.         #print system('php','-r','echo "Hola\n";');
  56.         my $resultado = `php -r '
  57.                         include_once "marcas.php";
  58.                         prueba_curl("$MARCA1","$MARCA2","$MARCA3");
  59.                 '
  60.         `;
  61.         #print $resultado;
  62.        
  63.         return [
  64.                 '200',
  65.                 [ 'Content-Type' => 'text/plain' ],
  66.                 [ "<h1>".time()."</h1><br><br>".
  67.                   "MARCA1: ".$MARCA1."<br>".
  68.                   "MARCA2: ".$MARCA2."<br>".
  69.                   "MARCA3: ".$MARCA3."<br><hr><br>".
  70.                   $resultado."<br><hr><br>" ],
  71.         ];
  72.  
  73. }
  74.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Sintáxis: (IFSoft.wsdl) [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="iso-8859-1" ?>
  2.  
  3.  
  4.  
  5. <wsdl:definitions name="IFSoft"
  6. targetNamespace="http://ip:5000/cgi-bin/psgi/wsdl/"
  7. xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
  8. xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
  9. xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  10. xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
  11. xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
  12. xmlns:tns="http://ip:5000/cgi-bin/psgi/wsdl/"
  13. xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  14. xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
  15.  
  16.  
  17.  
  18. <wsdl:types>
  19.  
  20.   <xsd:schema elementFormDefault="qualified"
  21.              targetNamespace="http://ip:5000/cgi-bin/psgi/wsdl" >
  22.  
  23.     <xsd:element name="marcasConsulta">
  24.       <xsd:complexType>
  25.         <xsd:sequence>
  26.           <xsd:element name="MARCA1" type="xsd:string" />
  27.           <xsd:element name="MARCA2" type="xsd:string" />
  28.           <xsd:element name="MARCA3" type="xsd:string" />
  29.           <xsd:element name="MARCA4" type="xsd:string" />
  30.           <xsd:element name="MARCA5" type="xsd:string" />
  31.         </xsd:sequence>
  32.       </xsd:complexType>
  33.     </xsd:element>
  34.  
  35.     <xsd:element name="marcasRespuesta">
  36.       <xsd:complexType>
  37.         <xsd:sequence>
  38.           <xsd:element name="TablaMarcas" type="xsd:string" />
  39.         </xsd:sequence>
  40.       </xsd:complexType>
  41.     </xsd:element>
  42.  
  43.   </xsd:schema>
  44.  
  45. </wsdl:types>
  46.  
  47.  
  48.  
  49. <wsdl:message name="marcasIn">
  50.   <wsdl:part element="tns:marcasConsulta" name="parameters" />
  51. </wsdl:message>
  52.  
  53. <wsdl:message name="marcasOut">
  54.   <wsdl:part element="tns:marcasRespuesta" name="parameters" />
  55. </wsdl:message>
  56.  
  57.  
  58.  
  59. <wsdl:portType name="IMarcas" >
  60.   <wsdl:operation name="ConsultaMarcas" parameterOrder="MARCA1 MARCA2 MARCA3 MARCA4 MARCA5" >
  61.     <wsdl:input message="tns:marcasIn" name="marcasIn" />
  62.     <wsdl:input message="tns:marcasOut" name="marcasOut" />
  63.   </wsdl:operation>
  64. </wsdl:portType>
  65.  
  66.  
  67.  
  68. <wsdl:binding name="IMarcas" type="tns:IMarcas">
  69.   <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
  70.   <wsdl:operation name="ConsultaMarcas">
  71.     <soap:operation soapAction="marcasIn" style="document" />
  72.     <wsdl:input name="marcasIn" >
  73.       <soap:body use="literal" />
  74.     </wsdl:input>
  75.     <wsdl:output name="marcasOut" >
  76.       <soap:body use="literal" />
  77.     </wsdl:output>
  78.   </wsdl:operation>
  79. </wsdl:binding>
  80.  
  81.  
  82.  
  83.  
  84. <wsdl:service name="ConsultaMarcas">
  85.   <wsdl:documentation>Consulta de Marcas IF-Software.</wsdl:documentation>
  86.   <wsdl:port binding="tns:IMarcas" name="IMarcas" >
  87.     <soap:Address location="http://ip:5000/cgi-bin/psgi/marcas.psgi" />
  88.   </wsdl:port>
  89. </wsdl:service>
  90.  
  91.  
  92.  
  93. </wsdl:definitions>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Para poder ejecutar el marcas.psgi lo que hago es:

plackup marcas.psgi

¿Cómo puedo hacer para acceder a ese marcas.psgi a traves del WSDL? ¿Cómo "publico" ese WSDL?

Muchas gracias por todo.
Sebosin
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2013-11-27 05:56 @288

Publicidad

Re: PSGI y WSDL

Notapor explorer » 2013-11-27 07:15 @343

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

Según entiendo, lo que quieres es poder solicitar una petición SOAP, y que esa petición ejecute el marcas.pgsi.

Quizás la solución sea SOAP::WSDL::Server::Plack. Con ello, puedes crear una aplicación basado en SOAP::WSDL, asociarle el wsdl, ejecutar el marcas.pgsi, y devolver el resultado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado