Página 1 de 1

webservice usando soap

Enviado: 13 Mai 2016 16:22
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

webservice usando soap

Enviado: 13 Mai 2016 17:24
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

webservice usando soap

Enviado: 13 Mai 2016 23:16
por edutek

webservice usando soap

Enviado: 14 Mai 2016 01:37
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 )

webservice usando soap

Enviado: 14 Mai 2016 10:56
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>

webservice usando soap

Enviado: 14 Mai 2016 13:53
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()


webservice usando soap

Enviado: 14 Mai 2016 15:53
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

webservice usando soap

Enviado: 16 Mai 2016 13:53
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 ?

webservice usando soap

Enviado: 16 Mai 2016 14:09
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