Eu comecei faz pouco tempo a fazer a comunicação com webservices, então ainda estou meio inexperiente no assunto, mas esta acontecendo algo muito estranho comigo. Estou tentando me conectar a um servidor de homologação do rodocred, para enviar um evento de autenticação, mas o XML de retorno sempre diz que esta com algo declarado errado (xmlsaida.xml), e eu não sei o que esta acontecendo. Entrei em contato com provedor de servicos, mandei para ele os XML´s de entrada e saida, e ele me falou que os XML´s estão corretos, porem, quanto fomos testar "on-line", o rapaz do outro lado falou que o XML que esta chegando pra ele é outra coisa do que eu falei que estava mandando (esta la em baixo, ultimo XML). Sera que o quando eu dou o comando RUN AutenticarCliente IN hPortType (INPUT xmlentrada, OUTPUT xmlsaida) o progress subsitui algo? Eu não sei mais o que fazer. Código: DEFINE VARIABLE hWebSrvc AS HANDLE NO-UNDO. DEFINE VARIABLE hPortType AS HANDLE NO-UNDO. DEFINE VARIABLE xmlentrada AS LONGCHAR NO-UNDO. DEFINE VARIABLE xmlsaida AS LONGCHAR NO-UNDO. CREATE SERVER hWebSrvc. hWebSrvc:CONNECT("-WSDL http://homologacao.ws.rodocred.com.br/rodocred.asmx?WSDL"). RUN RodocredSoap SET hPortType ON hWebSrvc. COPY-LOB FILE "C:\Desenvolvimento\CIOT\xmlentrada.xml" TO xmlentrada. RUN AutenticarCliente IN hPortType (INPUT xmlentrada, OUTPUT xmlsaida). COPY-LOB xmlsaida TO FILE "c:\xmlsaida.xml". DELETE OBJECT hPortType. hWebSrvc:DISCONNECT(). DELETE OBJECT hWebSrvc. XMLENTRADA.XML Código: <?xml version="1.0" encoding="UTF-8" ?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ws="https://ws.rodocred.com.br/"> <soap:HEADER> </soap:HEADER> <soap:Body> <ws:AutenticarClienteRequest> <ws:IdClienteRodocred>320</ws:IdClienteRodocred> <ws:LoginIntegracao>integracao-320</ws:LoginIntegracao> <ws:ChaveAutenticacao>1234</ws:ChaveAutenticacao> </ws:AutenticarClienteRequest> </soap:Body> </soap:Envelope> XMLSAIDA.XML Código: <AutenticarClienteResponse xmlns="https://ws.rodocred.com.br/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <RetornoMensagem> <StatusRetorno>ERRO</StatusRetorno> <Excecao> <TipoExcecao>VALIDACAO</TipoExcecao> <CodigoExcecao>GENXSD002</CodigoExcecao> <MensagemExcecao>The element 'AutenticarClienteRequest' in namespace 'https://ws.rodocred.com.br/' has incomplete content. List of possible elements expected: 'LoginIntegracao' in namespace 'https://ws.rodocred.com.br/'.</MensagemExcecao> </Excecao> </RetornoMensagem> </AutenticarClienteResponse> XML que o provedor do serviço (no caso a rodocred) diz que chega la pra ele Código: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body xmlns:s0="https://ws.rodocred.com.br/" xmlns:s1="http://www.w3.org/2001/XMLSchema"> <s0:AutenticarClienteRequest> <IdClienteRodocred>1290</IdClienteRodocred> <LoginIntegracao>int1290</LoginIntegracao> <ChaveAutenticacao>123456</ChaveAutenticacao> </s0:AutenticarClienteRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Putz, to no maior apuro aqui gente, mas acho que sei o que é. Alguem sabe porque o progress troca o meu "<soap:envelope..." por "SOAP-ENV:envelope..."?