webservice usando soap

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
edutek
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 21 Set 2005 21:16
Localização: Campo Grande-MS

webservice usando soap

Mensagem por edutek »

Boa tarde


Alguem tem um exemplo de acesso a WebServiçe usando o SOAP



Endereços de WSDL nosso WebServices para validação do processo de integração. (ambiente de homologação)

http://186.250.92.15...l/wsdl/IDMDados

http://186.250.92.15...adosSolMonitora

Usuário: WEBSERVICE
Senha: WEBSERVICE
Transportador: 7



como eu chamaria isso
Eduardo Mendes
eduardo@conesnet.com.br
xharbour 1.0.0 + gtwvw + dbfcdx + xdev + sqlib + hwgui (printdos e msgs)
clipper 5.2e + exospace
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

webservice usando soap

Mensagem por Toledo »

Eduardo, os endereços de WSDL ficaram quebrados, então poste novamente os endereços de WSDL, mas coloque entre as tags endereçoWSDL.

Abraços
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
edutek
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 21 Set 2005 21:16
Localização: Campo Grande-MS

webservice usando soap

Mensagem por edutek »

Eduardo Mendes
eduardo@conesnet.com.br
xharbour 1.0.0 + gtwvw + dbfcdx + xdev + sqlib + hwgui (printdos e msgs)
clipper 5.2e + exospace
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

webservice usando soap

Mensagem por rochinha »

Amiguinhos,

edutek

Provavelmente você deverá enviar um .XML formatado com os dados necessários para este WS.

Veja se te dá uma luz:

Código: Selecionar todos


   cWebService   := "http://webservices.sefaz.rs.gov.br/CadastroContribuintesRSGeral_XML.asp"

   txtCPF         := "00000000000"
   txtSenha      := "123456"
   txtIE            := "0000000000"
   txtCNPJ       := "00000000000000"
   txtCPFtitular := "00000000000"

   //Monta o documento XML conforme a estrutura definida para este Web Service
   sConteudo := []
   sConteudo := sConteudo + [<PARAMETROS>]
   sConteudo := sConteudo + [  <CPF>]        + Right("00000000000" + Trim(txtCPF), 11) + [</CPF>]
   sConteudo := sConteudo + [  <SENHA>]      + txtSenha + [</SENHA>]
   sConteudo := sConteudo + [  <IE>]         + Right("0000000000" + Trim(txtIE), 10) + [</IE>]
   sConteudo := sConteudo + [  <CNPJ>]       + Right("00000000000000" + Trim(txtCNPJ), 14) + [</CNPJ>]
   sConteudo := sConteudo + [  <CPFTITULAR>] + Right("00000000000" + Trim(txtCPFtitular), 11) + [</CPFTITULAR>]
   sConteudo := sConteudo + [</PARAMETROS>]

   //Converte para um documento XML no padrão DOM
   objXMLDOM  := TOLEAUTO():New( "Microsoft.XMLDOM" )

   //Faz o carregamento do XML para o motor
   objXMLDOM:async := .f.
   objXMLDOM:loadXML( sConteudo )

   //Cria objeto de conversação
   objXMLHTTP := TOleAuto():New( "MSXML2.ServerXMLHTTP" )

   //Aponta para o Web Service
   objXMLHTTP:open( "POST", cWebService, .F. )

   //Envia o documento XML para o Web Service
   objXMLHTTP:send( objXMLDOM:xml )

   //Aqui é carregado o retorno do Web Service.
   sRetorno := objXMLHTTP:responseXML:xml
   objXMLDOM:async := .f.
   cResponseText := objXMLDOM:loadXML( sRetorno )

   //Mostra o conteúdo do retorno
   MemoEdit( cResponseText )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

webservice usando soap

Mensagem por Toledo »

Amigos, segue em anexo um exemplo.
edutek escreveu:como eu chamaria isso
Em um destes endereços de WebService que você postou tem mais de 40 funções (operations), então seria bom ver se este webservice disponibiliza algum manual.

Neste demo que está em anexo, estou usando a função GetDataTransportador, que usa os dados que você passou (Usuário, senha e transportador).

enviado.xml

Código: Selecionar todos

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:uDMDados-IDMDados">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:GetDataTransportador soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <UsuLogin xsi:type="xsd:string">WEBSERVICE</UsuLogin>
         <UsuSenha xsi:type="xsd:string">WEBSERVICE</UsuSenha>
         <TranCodigo xsi:type="xsd:int">7</TranCodigo>
         <QtdeReg xsi:type="xsd:int">10</QtdeReg>
      </urn:GetDataTransportador>
   </soapenv:Body>
</soapenv:Envelope>
retorno.xml

Código: Selecionar todos

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <NS1:GetDataTransportadorResponse xmlns:NS1="urn:uDMDados-IDMDados">
         <return xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="utf-8" ?>
<ReturnDataTran>
<DataTran>
<Records>10</Records>
<Tran>
<tran_pess_oras_codigo>18</tran_pess_oras_codigo>
<pjur_razao_social>TRANSPORTES FUTURA LTDA.</pjur_razao_social>
<pjur_cnpj>06712436000190</pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9631</tran_pess_oras_codigo>
<pjur_razao_social>TRANSGATO LTDA.</pjur_razao_social>
<pjur_cnpj>24777054000126</pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9639</tran_pess_oras_codigo>
<pjur_razao_social>ACE</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9640</tran_pess_oras_codigo>
<pjur_razao_social>AGF E ALLIANCE</pjur_razao_social>
<pjur_cnpj>86730103000122</pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9641</tran_pess_oras_codigo>
<pjur_razao_social>BERKLEY</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9642</tran_pess_oras_codigo>
<pjur_razao_social>CHUBB</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9643</tran_pess_oras_codigo>
<pjur_razao_social>GENERALI SEGUROS</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9644</tran_pess_oras_codigo>
<pjur_razao_social>HDI HANNOVER</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9645</tran_pess_oras_codigo>
<pjur_razao_social>ITAU</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
<Tran>
<tran_pess_oras_codigo>9646</tran_pess_oras_codigo>
<pjur_razao_social>LIBERTY PAULISTA</pjur_razao_social>
<pjur_cnpj></pjur_cnpj>
</Tran>
</DataTran>

</ReturnDataTran>]]></return>
      </NS1:GetDataTransportadorResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Anexos
soapdemo.zip
(13.69 KiB) Baixado 141 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

webservice usando soap

Mensagem por asimoes »

Pessoal,

Eu tenho essa tag em um xml de envio, como é que faço a quebra de linha na mensagem:

Por exemplo o conteúdo da variável cMensagem

Código: Selecionar todos

cMensagem:="TESTE DE ENVIO DE MENSAGEM"+hb_Eol()
cMensagem+="RIO DE JANEIRO, 14 DE MAIO DE 2016"+hb_Eol()
cMensagem+="TESTE COM HARBOUR" 

   cXML +=          [<mensagem>]+cMensagem+[</mensagem>]+hb_EoL()

►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

webservice usando soap

Mensagem por asimoes »

Consegui:

cMensagem:="TESTE DE ENVIO DE MENSAGEM"+hb_Eol()
cMensagem+="RIO DE JANEIRO, 14 DE MAIO DE 2016"+hb_Eol()
cMensagem+="TESTE COM HARBOUR"

cMensagem := StrTran(cMensagem, hb_Eol(), "<br>")

Código: Selecionar todos


cXML +=          [<mensagem>]+"<![CDATA["+cMensagem+"]]>"+[</mensagem>]+hb_EoL()

Assim eu resolvi no xml cada quebra linha de uma mensagem
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
edutek
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 21 Set 2005 21:16
Localização: Campo Grande-MS

webservice usando soap

Mensagem por edutek »

Obrigado pelo Retorno.

Uma coisa, eu uso xharbour

a funcao hb_eol() tem uma equivalente em xharbour ?
e a hb_milliseconds(500) pode ser trocada por outras ?
Eduardo Mendes
eduardo@conesnet.com.br
xharbour 1.0.0 + gtwvw + dbfcdx + xdev + sqlib + hwgui (printdos e msgs)
clipper 5.2e + exospace
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

webservice usando soap

Mensagem por asimoes »

hb_eol() => Chr(13) + Chr(10) // no windows, no linux tem outro comportamento

Se a estiver usando a hb_milliseconds(500) pode substituir conforme exemplo abaixo

Código: Selecionar todos

   Do While oServerWS:readyState != 4
         oServerWS:WaitForResponse( 500 )
   Enddo
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder