1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida RESTful: Desenvolver WebAPI em Progress

Discussão em 'Progress 4GL' iniciado por rafael.andrade, Junho 18, 2018.

  1. ueluis

    ueluis Membro Participativo

    acredito que dê para criar um tuto sim, só preciso saber de qual parte seria interessante exemplo: a partir de um wsdl progress eu ler com php?
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Eu acho que seria legal completo pois pode ser que haja pessoas com dúvidas em partes diferentes
  3. ueluis

    ueluis Membro Participativo

    Pessoal boa tarde,

    partindo do pré suposto que será necessário uma licença full na maquina para o proxygen.

    configurei o webservice utilizando este pdf.

    http://download.psdn.com/media/architect_video/RIA/WebServices_Notes.pdf

    Com ele voce conseguira configurar um webservice na maquina integrado com toncat.
    Nas ultimas paginas tem um exemplo de publicação de um serviço wsdl porém o teste é realizado em um Editor Progress.

    Utilizei este site para treinar a programação e entender a lógica, tem uma lista de webservice publicado para vc brincar.

    Progress Web Services Adapter

    http://wstraining.progress.com/wsa/wsa1/wsdl?

    Abaixo um exemplo em progress de conexão com o serviço:
    http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService

    utilizando a procedure ValidateCustomer que recebe um numero iCustNum e retorna o custname do serviço.
    obs: exemplo bruto sem qualquer tratativa pois o objetivo é entender o funcionamento

    Código:
    DEF VAR hServer AS HANDLE NO-UNDO.
    DEF VAR hPortType AS HANDLE NO-UNDO.
    DEF VAR lreturn AS LOGICAL NO-UNDO.
    DEF VAR iCustNum AS INTEGER.
    DEF VAR CCustName AS CHAR.
    
    CREATE SERVER hServer.
      lReturn = hServer:CONNECT("-WSDL http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService -Port NewCoServiceObj").
    
      IF lReturn = NO THEN DO:
      MESSAGE
      "Could not connect to WebService server"
      VIEW-AS ALERT-BOX INFO BUTTONS OK.
      APPLY "CLOSE":U TO THIS-PROCEDURE.
      RETURN.
      END.
      RUN NewCoServiceObj SET hPortType ON SERVER hServer.
    
    ASSIGN
      iCustNum = 5. /*insira qualquer numero para ver a mudança*/
    
      RUN ValidateCustomer IN hPortType (INPUT iCustNum, OUTPUT cCustName)
      NO-ERROR.
    
      DISP ccustName FORMAT "x(36)".
      
    Agora temos o mesmo acesso Através da biblioteca Nusoap
    Que pode ser obtida através do link:
    https://sourceforge.net/projects/nusoap/files/latest/download

    obs: no php não precisei informar a porta de serviço wsdl "NewCoServiceObj"

    Código:
    <?php
      // include classes NuSOAP
    require_once("lib/nusoap.php");
    //parametros de conexão
    $opts = array(
      'http' => array( 'user_agent' => 'PHPSoapClient' )
      );
    
    $context = stream_context_create($opts);
    $soapContext = array(
      'stream_context' => $context,
      'cache_wsdl' => WSDL_CACHE_NONE
      );
    //instanciando objeto
    $soapClient = new SoapClient('http://wstraining.progress.com/wsa/wsa1/wsdl?targetURI=urn:OpenEdgeServices:NewCoService', $soapContext);
    
    if($soapClient){
      echo "SoapClient Conectado <p>";
      $iCustNum = 5;
      $parameters = array('iCustNum' => $iCustNum);
      $resultado = $soapClient->ValidateCustomer($parameters); 
      echo '<table border="1" bordercolor="#008000"> <tr><td>iCustNum</td><td>CustName</td></tr>';
      echo '<tr><td>'.$iCustNum.'</td><td>';
      print_r($resultado);
      echo '</td></tr></table>';  
    }else{
    echo "SoapClient Não Conectado";
    }
    ?>
    
    espero que ajude!
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Maravilha...vlw

    E como o webspeed fica conectado nos bancos de dados?
  5. ueluis

    ueluis Membro Participativo

    no appservice tem a opção srvrStartupParam: que vc coloca os parametros para subir os bancos (-pf,-param (usuario e senha dos bancos), -p que chama os alias dos bancos.
    de um modo geral temos o appservice subindo os bancos e gerenciando as solicitações vindo do wsa integrado ao tomcat.

Compartilhe esta Página