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

Retorno WebService

Discussão em 'Progress 4GL' iniciado por rodrigobraz, Abril 13, 2012.

  1. rodrigobraz

    rodrigobraz Membro Participativo

    olá Luciano.

    responderam sim.

    na verdade foram 3 alterações que fiz e que passou a funcionar... não sei se foram as 3 ou se somente uma delas já funcionaria.

    primeiro, atualizei o progress para a versão 10.2B06.

    a url do webservice que estava tentando conectar tinha a porta 8080 definida nela... tive que pedir para o provedor do serviço alterar a url, retirando essa porta 8080.

    e por último, alterei o parâmetro de usuário e senha que pedia para conectar no webservice...
    eu estava usando -WSDLUserId user-id -WSDLPassword password e troquei para -SOAPEndpointUserid '<username>' -SOAPEndpointPassword '<pasword>'
  2. luciano.seibel

    luciano.seibel Sem Pontuação

    Mto obrigado.

    Vou conseguiro o b06 ... ate fiz a alteracao como vc propos mas ainda da erro .. entao so sobrou a b06 mesmo.

    SEGUE meu codigo exemplo:


    /* SOAPHeader3.p
    Calls a ficticious web service, passes it a username and password through
    a SOAP message request header, and gets back a string. The Web service has
    only one service and port available. */
    /*1*/
    /* Define local variables */
    DEFINE VARIABLE hWebSrvc AS HANDLE.
    DEFINE VARIABLE hPortType AS HANDLE.
    DEFINE VARIABLE cUsername AS CHARACTER INIT "wskbase".
    DEFINE VARIABLE cPassword AS CHARACTER INIT "kbasetke" .
    DEFINE VARIABLE cResponse AS CHARACTER FORMAT "x(72)".

    DEFINE VARIABLE hXdoc AS HANDLE.
    DEFINE VARIABLE hXnoderef1 AS HANDLE.
    DEFINE VARIABLE hXnoderef2 AS HANDLE.
    DEFINE VARIABLE hXAttribute AS HANDLE.
    DEFINE VARIABLE hXtext AS HANDLE.
    DEFINE VARIABLE g_header AS HANDLE.
    /*2*/
    /* Build global SOAP request header */
    RUN BuildRequestHeader (OUTPUT g_header).
    /* Create the Web service server object */
    CREATE SERVER hWebSrvc.
    /* Connect to the WS */

    hWebSrvc:CONNECT("-WSDL http://lclient/bs.ws.CEPDNE.CLS?WSDL
    -Binding WebServiceGeralSoap
    -SOAPEndpoint http://lclient/bs.ws.CEPDNE.CLS
    -SOAPEndpointUserid user
    -SOAPEndpointPassword senha
    -ServiceNamespace http://www.tempuri.org
    -TargetNamespace http://www.tempuri.org").

    MESSAGE hWebSrvc:Connected()
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

    IF not hWebSrvc:Connected() THEN return.

    /* Get the method, set the port type */
    RUN WebServiceGeralSoap SET hPortType ON hWebSrvc.
    /*3*/
    /* Associate the request callback with the port type */
    hPortType:SET-CALLBACK-PROCEDURE("REQUEST-HEADER", "ReqHandler").
    /*4*/
    /* Invoke the web service and display the results */

    Define Variable c-xml As Longchar No-undo.

    Assign c-xml =

    '<ns0:Request xmlns:ns0="http://www.tempuri.org">' +
    ' <ns0:CEP> ' +
    ' <ns0:REQ> ' +
    ' <ns0:Numero>94130100</ns0:Numero> ' +
    ' </ns0:REQ> ' +
    ' </ns0:CEP> ' +
    '</ns0:Request> '.


    RUN Consultar IN hPortType (Input c-xml , OUTPUT cResponse).
    DISPLAY cResponse LABEL "WS Response" WITH FRAME aaa.
    /*5*/
    DELETE OBJECT g_header.
    DELETE OBJECT hPortType.
    hWebSrvc:DISCONNECT().
    DELETE OBJECT hWebSrvc.
  3. rodrigobraz

    rodrigobraz Membro Participativo

    tenta colocar o usuário e senha entre aspas simples.
  4. luciano.seibel

    luciano.seibel Sem Pontuação

    nada feito :(

    baixei o b06 e vou aplicar ...
  5. luciano.seibel

    luciano.seibel Sem Pontuação

    nada feito ... acho q o pacote b06 que baixei tava corrompido ...

    vc pode postar um exemplo do seu codigo resolvendo isto ?
  6. rodrigobraz

    rodrigobraz Membro Participativo

    segue a função completa:

    Código:
    FUNCTION wsConsultarEstado RETURNS LONGCHAR (INPUT pcXml  AS LONGCHAR):
    
        DEFINE VARIABLE hWebService         AS HANDLE    NO-UNDO.
        DEFINE VARIABLE hManterEstadoRemote AS HANDLE    NO-UNDO.
        DEFINE VARIABLE lOk                 AS LOGICAL   NO-UNDO.
        DEFINE VARIABLE lcReturn            AS LONGCHAR  NO-UNDO.
        
        CREATE SERVER hWebService.
    
        lOk = hWebService:CONNECT("-WSDL 'http://<url>/<service>?wsdl'" +
                                  " -SOAPEndpointUserid '" + lcWSDLUser + 
                                  "' -SOAPEndpointPassword '" + lcWSDLPwrd + "'") NO-ERROR.
        IF NOT lOk THEN DO:
            DELETE OBJECT hWebService NO-ERROR.
            RETURN "Serviço indisponível!".
        END.
    
        RUN ManterEstadoRemote SET hManterEstadoRemote ON hWebService NO-ERROR.
        IF NOT VALID-HANDLE (hManterEstadoRemote) THEN DO:
            hWebService:DISCONNECT () NO-ERROR.
            DELETE OBJECT hWebService NO-ERROR.
            RETURN "Erro ao estabelecer PortType.".
        END.
    
        RUN consultar IN hManterEstadoRemote(INPUT pcXml, OUTPUT lcReturn) NO-ERROR.
        IF VALID-HANDLE(ERROR-STATUS:ERROR-OBJECT-DETAIL) THEN DO:
            lcReturn = getSoapMsgError(ERROR-STATUS).
            DELETE PROCEDURE hManterEstadoRemote NO-ERROR.
            hWebService:DISCONNECT () NO-ERROR.
            DELETE OBJECT hWebService NO-ERROR.
            RETURN lcReturn.
        END.
    
        IF ERROR-STATUS:ERROR THEN DO:
            DELETE PROCEDURE hManterEstadoRemote NO-ERROR.
            hWebService:DISCONNECT () NO-ERROR.
            DELETE OBJECT hWebService NO-ERROR.
            RETURN "ERROR-STATUS:ERROR:~n[" + ERROR-STATUS:GET-MESSAGE(1) + "].".
        END.
    
        DELETE PROCEDURE hManterEstadoRemote NO-ERROR.
        hWebService:DISCONNECT () NO-ERROR.
        DELETE OBJECT hWebService NO-ERROR.
    
        RETURN lcReturn.
                                                    
    END FUNCTION.

Compartilhe esta Página