Clipper On Line • Ver Tópico - Comunicação SOAP

Comunicação SOAP

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Comunicação SOAP

Mensagempor JoséQuintas » 26 Jul 2019 13:44

Lembram que falei que a programação imita as "coisas humanas" ?

A comunicação SOAP...
- endereço de internet pra entrega
- informações na conexão
- ENVELOPE com o XML dentro
- Cada webservice tem seus detalhes
- etc

Complicado??????
Nunca viu isso antes???
Deixe eu lembrar

envelope.png


Se preencher errado, os correios não entregam.
Se preencher o SOAP errado.... também

Se não colocar a carta dentro de um envelope não vai...
No SOAP também...

A carta precisa destinatário?
O SOAP também.

A carta precisa selos?
O SOAP também precisa algo equivalente a selos.

Se for internacional, precisa escrever no idioma do país que vai receber....

Interessante né.....

Acostumamos a pensar igual computador, comparando qualquer coisa com o uso do computador, com alguma coisa que conhecemos no computador.
Por isso, às vezes, quem nunca mexeu acaba entendendo melhor, apenas porque usa outra referência como ponto de partida.

O lado chato é ....
Só quem aprendeu consegue saber se realmente dá pra comparar com alguma coisa humana...
E nem sempre quem aprendeu consegue enxergar isso.

Comecei a pensar em programação por esse ângulo, comparando com alguma coisa da vida humana.
E não é que muita coisa se parece.... e até facilita pensar de um jeito humano...

o XML da nota vai para o webservice dentro de um envelope.... e pra cada coisa vai para um endereço diferente....
Uia.... é igual uma carta do correio, pra mandar pra locais diferentes !!!!

Precisa passar a SOAP Action !!!
Dá pra comparar com uma empresa, pra ir pra um departamento específico !!!

Webservice é complicado ?
É tão complicado quanto enviar uma carta pelos correios !!!!
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 26 Jul 2019 13:58

Agora vamos falar de sefazclass, ou de componentes pra NFE.....

O que eles tem em comum?
Eles são como uma agência dos correios.

Eles tem a lista dos endereços, e a lista dos departamentos.
E sabem de algumas regras pra "entregar a carta" em cada lugar.

Uau.... matei os componentes de NFE.... kkk
Mas é praticamente isso, é simples assim.

Porque às vezes uma UF não funciona, ou novos serviços precisam de alteração?
Ué... porque pode ter alterado o endereço do destinatário, ou porque para aquele "novo país/local" tem algum detalhe a mais a ser colocado, talvez um "selo" a mais na carta.

Pensando assim, a gente até fica mais tranquilo em fazer alterações, ou quando não funciona, porque estamos certos de que é só acertar aquele detalhezinho.
É diferente de pensar em algo complexo, desconhecido, que parece ser de outro mundo.

Cheguei a comentar aqui que isso da Sefaz seria parecido com enviar email.
Pensando bem, é mais parecido com enviar uma carta.
E às vezes essa carta tem resposta, e às vezes não.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 26 Jul 2019 14:08

Autorizar uma nota.....
Envia o XML... pega o recibo
Depois consulta o recibo... pega o resultado

Igual uma carta registrada.
Você envia a carta, e recebe o protocolo de recebimento da carta.
Depois envia outra carta perguntando qual o resultado da nota que enviou, mostrando o protocolo de recebimento que tem em mãos.
E aí sim... recebe o resultado se foi autorizada ou não.

É igual a enviar carta ou não?

Nota:
De vez em quando me vém essa "inspiração" pra explicar certas coisas... acho tão interessante que posto por aqui.

Lembram que comentei:
Simplificar fontes não altera somente os fontes, altera nossa cabeça.
Talvez isso tenha vindo como efeito colateral, de "descomplicar" os fontes, e foi descomplicando a cabeça.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor sygecom » 01 Ago 2019 22:43

Zé,
O problema é quando os correios estão de greve e ninguém entrega a carta, não responde nada, a gente fica pergunta o que está acontecendo, até que 3 horas depois sai a noticia em outro lugar qualquer que eles estão de greve e, pedem para você usar outros métodos de envio de carta como contingência.

E quando você envia a carta e os correios dizem que estão com carta e ainda vão entregar uma resposta para você, mas isso já se passou 6 meses e ainda está em processamento, eles devem ter perdido a carta e não sabem como vão nos responder, tenho cliente com nota em processamento desde o inicio do ano, quando deu uma pane e ativaram o contingência.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 01 Ago 2019 23:15

Não deixa de ser parecido... sua carta tá lá no meio de milhares... sem previsão de encontrar kkkk
E se tá de greve... tá de greve... a carta fica parada...
Continua valendo a comparação.

Só não tem a opção de levar pessoalmente na Sefaz....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor gilbertosilverio » 03 Ago 2019 07:07

Ola Quintas,

Achei bem didático tua postagem, fácil de entender, mais onde eu enrosco e em saber qual o endereço que devo enviar.

Estou tentando baixar um xml de cotação, a empresa me passou um XML para integração , e minha duvida e se este XML faz parte da conexão ou somente devo usar partes dele.

Ja tentei de todas as maneira entender como isso funciona, mais sou burro demais, pois não vai...

Por favor, baseado neste XML de integração, como devo configurar o "ENDEREÇO DE ENVIO" (casa do cara...kkkk), e aqui que me perco, nunca sei o que e o inicio, com configurar a rotina de envio.

<?xml version="1.0" encoding="UTF-8"?>
<con:soapui-project id="1bcfb632-35f9-48cd-ad67-48bb533f13de" activeEnvironment="Default" name="Integração Fornecedor - HOMOLOGAÇÃO" resourceRoot="" soapui-version="5.2.0" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" id="5403d6bb-cfd2-40ea-ba6f-efe83186f396" wsaVersion="NONE" name="IWSFornecedorCotacaoPortBinding" type="wsdl" bindingName="{http://cotacao.fornecedores.client.webService.apoio.com.br/}IWSFornecedorCotacaoPortBinding" soapVersion="1_1" anonymous="optional" definition="http://homologacao.apoiocotacoes.com.br/app/fornecedores/WSFornecedores?wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://homologacao.apoiocotacoes.com.br/app/fornecedores/WSFornecedores?wsdl"><con:part><con:url>http://homologacao.apoiocotacoes.com.br/app/fornecedores/WSFornecedores?wsdl</con:url><con:content><![CDATA[<!--Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.3-b01-.-->
<!--Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.3-b01-.-->
<definitions targetNamespace="http://cotacao.fornecedores.client.webService.apoio.com.br/" name="WSFornecedorCotacaoService" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://cotacao.fornecedores.client.webService.apoio.com.br/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types/>
  <message name="post">
    <part name="arg0" type="xsd:string"/>
    <part name="arg1" type="xsd:string"/>
    <part name="arg2" type="xsd:string"/>
    <part name="arg3" type="xsd:string"/>
    <part name="arg4" type="xsd:string"/>
  </message>
  <message name="postResponse">
    <part name="return" type="xsd:string"/>
  </message>
  <message name="request">
    <part name="arg0" type="xsd:string"/>
    <part name="arg1" type="xsd:string"/>
    <part name="arg2" type="xsd:string"/>
    <part name="arg3" type="xsd:string"/>
  </message>
  <message name="requestResponse">
    <part name="return" type="xsd:string"/>
  </message>
  <portType name="IWSFornecedorCotacao">
    <operation name="post" parameterOrder="arg0 arg1 arg2 arg3 arg4">
      <input wsam:Action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/postRequest" message="tns:post"/>
      <output wsam:Action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/postResponse" message="tns:postResponse"/>
    </operation>
    <operation name="request" parameterOrder="arg0 arg1 arg2 arg3">
      <input wsam:Action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/requestRequest" message="tns:request"/>
      <output wsam:Action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/requestResponse" message="tns:requestResponse"/>
    </operation>
  </portType>
  <binding name="IWSFornecedorCotacaoPortBinding" type="tns:IWSFornecedorCotacao">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
    <operation name="post">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal" namespace="http://cotacao.fornecedores.client.webService.apoio.com.br/"/>
      </input>
      <output>
        <soap:body use="literal" namespace="http://cotacao.fornecedores.client.webService.apoio.com.br/"/>
      </output>
    </operation>
    <operation name="request">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal" namespace="http://cotacao.fornecedores.client.webService.apoio.com.br/"/>
      </input>
      <output>
        <soap:body use="literal" namespace="http://cotacao.fornecedores.client.webService.apoio.com.br/"/>
      </output>
    </operation>
  </binding>
  <service name="WSFornecedorCotacaoService">
    <port name="IWSFornecedorCotacaoPort" binding="tns:IWSFornecedorCotacaoPortBinding">
      <soap:address location="http://homologacao.apoiocotacoes.com.br:80/app/fornecedores/WSFornecedores"/>
    </port>
  </service>
</definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://homologacao.apoiocotacoes.com.br:80/app/fornecedores/WSFornecedores</con:endpoint></con:endpoints><con:operation id="8280406c-b58f-4215-ba01-37658633a58f" isOneWay="false" action="" name="post" bindingOperationName="post" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call id="bbd6ec41-c699-45df-9ebf-95822afd968a" name="Request 1"><con:settings/><con:encoding>UTF-8</con:encoding><con:endpoint>http://homologacao.apoiocotacoes.com.br:80/app/fornecedores/WSFornecedores</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cot="http://cotacao.fornecedores.client.webService.apoio.com.br/">
   <soapenv:Header/>
   <soapenv:Body>
      <cot:post>
         <arg0>?</arg0>
         <arg1>?</arg1>
         <arg2>?</arg2>
         <arg3>?</arg3>
         <arg4>?</arg4>
      </cot:post>
   </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/postRequest"/></con:call></con:operation><con:operation id="c73e15e7-2a6d-43ab-b5a5-731389cb4db0" isOneWay="false" action="" name="request" bindingOperationName="request" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call id="3cf63423-9243-4f8f-ae8b-b02dbc99e126" name="Buscar Cotação por ID"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://homologacao.apoiocotacoes.com.br:80/app/fornecedores/WSFornecedores</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cot="http://cotacao.fornecedores.client.webService.apoio.com.br/">
   <soapenv:Header/>
   <soapenv:Body>
      <cot:request>
         <arg0>?</arg0>
         <arg1>?</arg1>
         <arg2>?</arg2>
         <arg3>?</arg3>
      </cot:request>
   </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/requestRequest"/><con:wsrmConfig version="1.2"/></con:call><con:call id="65e01ac6-ed05-45e7-8e8f-425cb80a50c3" name="Buscar Cotação por DT_BEGIN"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://homologacao.apoiocotacoes.com.br:80/app/fornecedores/WSFornecedores</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cot="http://cotacao.fornecedores.client.webService.apoio.com.br/">
   <soapenv:Header/>
   <soapenv:Body>
      <cot:request>
         <arg0>cfernandesws</arg0>
         <arg1>qetuo</arg1>
         <arg2>WGG</arg2>
         <arg3>1234</arg3>
      </cot:request>
   </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://cotacao.fornecedores.client.webService.apoio.com.br/IWSFornecedorCotacao/requestRequest"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:properties/><con:wssContainer/><con:oAuth2ProfileContainer/><con:sensitiveInformation/></con:soapui-project>


O pessoal do suporte da APOIO, me passou que precisa chegar la este resquet, para pegar o XML de retorno da cotação
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cot="http://cotacao.fornecedores.client.webservice.apoio.com.br/">
   <soapenv:Header/>
   <soapenv:Body>
      <cot:request>
         <usuario>USUARIO</usuario>
         <senha>SENHA</senha>
         <operacao>WGG</operacao>
         <parametros>DT_BEGIN=02/08/2019 17:18:56;DT_END=02/08/2019 17:28:56;LAYOUT=WG;ISO=0</parametros>
      </cot:request>
   </soapenv:Body>
</soapenv:Envelope>


Se você puder me ajudar, preciso aprender como isso funciona, pois já tentei de tudo e não vai...

Grato.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 03 Ago 2019 07:38

gilbertosilverio escreveu:Achei bem didático tua postagem, fácil de entender, mais onde eu enrosco e em saber qual o endereço que devo enviar.


Quer enviar e não sabe o endereço.
Liga lá e pergunta.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor gilbertosilverio » 03 Ago 2019 07:43

Ola, Quintas,

Muito Obrigado pela ajuda, vou ligar...
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Comunicação SOAP

Mensagempor gilbertosilverio » 04 Ago 2019 10:13

Ola, Quintas,

Baixei tua SEFAZCLASS, para tentar entender como devo usar as TAGs do XML que postei aqui, e ao tentar compilar das esse erro.

Tirei o -w3 e passou. Como e so pra teste mesmo, vai que vai...
Anexos
Anotação 2019-08-04 101249.png
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 04 Ago 2019 10:56

Para teste pode incluir manualmente, e pra definitivo mais prático colocar no harbour/bin/hbmk.hbc
Indicar pasta de sefazclass.hbc

-lpathsefazclass.hbc

---harbour\bin\hbmk.hbc---
libpaths=pathsefazclass.hbc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 04 Ago 2019 11:04

Só voltando ao "endereço".
Geralmente ele é o ponto de partida, às vezes é a única referência que temos.
Como exemplo, da NFE, no portal da NFE:

nfe.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 04 Ago 2019 11:10

E dependendo do tipo de webservice, o próprio webservice já mostra uma espécie de manual, automaticamente.

nfe.png


A partir do endereço, podemos até usar a ferramenta SOAPUI pra ajudar a criar alguma coisa de teste.
Então... o endereço do webservice acaba sendo o ponto de partida mesmo.

E a empresa pode ter endereços diferentes para teste e para produção, então, raramente isso consta no XML.

Comparando com a carta....
O XML vai dentro da carta... falta saber o que vai preencher do lado de fora, o endereço do destinatário.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor gilbertosilverio » 06 Ago 2019 09:30

Ola Quintas,

Quero te agradecer, pelas dicas, pois consegui entender como esse negocio funciona.

Para quem precisar, baseado no exemplos do fórum que o Quintas e que outros postaram, e pelo meu método infalível, de tentativa e erro, fica aqui a comunicação da apoio.

FUNCTION EnviaSOAP()
   LOCAL oServer, cXmlEnvio, cRetorno, cUrl, cHost

   PRIVATE cXml      :="C:\NFE\cXML.XML"
   PRIVATE ArquivoXml:="C:\NFE\TESTASOAP.XML"

   if hwg_msgyesno([Enviar]) = .t.

      cUrl  := "http://homologacao.apoiocotacoes.com.br/app/fornecedores/WSFornecedores?wsdl"
      cHost := "http://cotacao.fornecedores.client.webService.apoio.com.br"

      cXmlEnvio :=[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cot="http://cotacao.fornecedores.client.webService.apoio.com.br/">]
      cXmlEnvio +=   [<soapenv:Header/>]
      cXmlEnvio +=   [<soapenv:Body>]
      cXmlEnvio +=      [<cot:request>]
      cXmlEnvio +=         [<usuario>USUARIO</usuario>]
      cXmlEnvio +=         [<senha>SENHA</senha>]
      cXmlEnvio +=         [<operacao>WGG</operacao>]
      cXmlEnvio +=         [<parametros>DT_BEGIN=06/08/2019 07:50:00;DT_END=06/08/2019 07:59:00;LAYOUT=WG;ISO=0</parametros>]
      cXmlEnvio +=      [</cot:request>]
      cXmlEnvio +=   [</soapenv:Body>]
      cXmlEnvio +=[</soapenv:Envelope>]

Hb_MemoWrit( cXML, cXmlEnvio)

//HWG_MSGINFO(STR(LEN(cXmlEnvio)))

         oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" )

         oServer:Open( "POST", cUrl, .F. )
       //oServer:SetRequestHeader( "Accept-Encoding", [gzip,deflate] )
         oServer:SetRequestHeader( "Content-Type",   [text/xml;charset=UTF-8])
       //oServer:SetRequestHeader( "SOAPAction",     [request] )
         oServer:SetRequestHeader( "Content-Length", [407] )
       //oServer:SetRequestHeader( "Host:",          cHost )
         oServer:SetRequestHeader( "Connection",     [Keep-Alive])
         oServer:SetRequestHeader( "User-Agent",     [Apache-HttpClient/4.1.1 (java 1.5)])
         oServer:send( cXmlEnvio )
         oServer:WaitForResponse( 1000 )
         cRetorno := oServer:responseText

//HWG_MSGINFO(STR(LEN(cRetorno)))

      IF ValType( cRetorno ) != "C"
         cRetorno := ""
      ELSE
         Hb_MemoWrit( ArquivoXml, cRETORNO)
      ENDIF
   ENDIF

RETURN


Detalhe, o SoapUI, mostra o uso de SOAPAction e Host, mais so consegui fazer a comunicação tirando estas duas linhas, creio que e por que no ENVELOPE, ja consta.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Comunicação SOAP

Mensagempor JoséQuintas » 06 Ago 2019 09:49

gilbertosilverio escreveu:Detalhe, o SoapUI, mostra o uso de SOAPAction e Host, mais so consegui fazer a comunicação tirando estas duas linhas, creio que e por que no ENVELOPE, ja consta.


Depois vou tentar confirmar isso.
Eu não sabia que isso era possível.

mesmo assim, estranho ser xmlns:cot e não xmlns:host.
poderia ser uma complicação a mais descobrir o nome correto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comunicação SOAP

Mensagempor gilbertosilverio » 03 Set 2019 08:01

Bom dia Quintas,

Por favor me da mais uma dica...

Como faço para testar se o webservice que estou tentando acessar esta ativo.

Existe algum comando para verificar isso.

Error WINOLE/1007 O tempo limite da operação foi atingido
(0x80072EE2): msxml6.dll (DOS Error -2147352567)
Called from ->WIN_OLEAUTO:SEND(0)
Called from ->ENVIA_WH(1854)
Called from ->RESPONDE_WHS_COTACAO(1665)


Estou fazendo teste em homologação, e geralmente o pessoal desativa o webserver, ai da a mensagem acima.

Procurei na net, mais não achei, os codigos de retorno da msxml6, tem algum macete pra ficar facil ou tenho que por dentro de um TRY.

To enviando desta maneira,

      Hb_MemoWrit( cXML, cXmlEnvio)

      oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP.6.0" )

      oServer:Open( "POST", cUrl, .F. )
      oServer:SetRequestHeader( "Content-Type",        [text/xml;charset=UTF-8])
      oServer:SetRequestHeader( "Content-Length",      [407] )
      oServer:SetRequestHeader( "Transfer-encoding",   [chunked])
      oServer:SetRequestHeader( "Connection",          [Keep-Alive])
      oServer:SetRequestHeader( "User-Agent",          [Apache-HttpClient/4.1.1 (java 1.5)])
      oServer:send( cXmlEnvio )
      oServer:WaitForResponse( 1000 )

      cRetorno := oServer:responseText


Grato.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 16 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro