Clipper On Line • Ver Tópico - Consumir Webservice ( SOAP )

Consumir Webservice ( SOAP )

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

Moderador: Moderadores

 

Consumir Webservice ( SOAP )

Mensagempor Alexandre Silva » 18 Out 2014 15:39

Entao pessoal..
após varias tentativas... inclusive com apoio do José Quintas.. nao obtivemos sucesso...
segue em anexo um exemplo e delphi.. que já testei e funciona...
o xml que se deve mandar é de um cte ok

Pode ser que alguem veja algo nao vimos no exemplo em harbour...
pois no harbour temos sempre o mesmo retorno:
<DESCCOMPLETA>Usuario nao informado</DESCCOMPLETA>

Estou disposto a pagar para quem resolver o problema usando harbour...

Obrigado
Anexos
meux.xml
(7.96 KiB) Baixado 210 vezes
SOAP.PRG
(2.63 KiB) Baixado 258 vezes
exemploConsumo_delphi.rar
(89.15 KiB) Baixado 234 vezes
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar de usuário

Alexandre Silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 351
Data de registro: 26 Mar 2007 00:16
Cidade/Estado: Itapema - SC
Curtiu: 34 vezes
Mens.Curtidas: 6 vezes

Consumir Webservice ( SOAP )

Mensagempor Itamar M. Lins Jr. » 18 Out 2014 17:34

Tem que usar as ferramentas certas.
Você não está verificando se o XML é válido antes de enviar.
No Harbour 3.4, eu acrescentei umas linhas p/ validar se seu XML está ok antes de enviar, e retorna "XML com problema".
Não vai funcionar porque vc está enviando um XML já com erro.

#include "hbxml.ch"
#include "hbmxml.ch"

function main()
LOCAL cXml, cSoapAction, cWebservice, cOperation, cRetorno
cls
cWebservice := "http://homologacao.averba.com.br/webserver/index.soap"
cSoapAction := "urn:ATMWebSvr#averbaCTe20"
cOperation := "averbaCTe20Request"
*-
cxlido:=HB_Memoread('meux.xml')
cXml := ""
*cXml += [<args>]
cXml += XmlTag( "usuario", "TESTES" )
cXml += XmlTag( "senha", "BASE" )
cXml += XmlTag( "codatm", "11340073" )
*--
cxml +='<xmlCTe><![CDATA['
cxml +=cxlido
cxml +=']]>'
cXml +='</xmlCTe>'

*cXml += [</args>]
cXml := SoapEnvelope( cXml, cOperation ) //

oXML := TXMLDocument():New( cXml, HBXML_STYLE_NOESCAPE )
IF oXML:nError != HBXML_ERROR_NONE
alert( "xml com problema " + Str( oXML:nError ) )
RETURN
ENDIF


*--
cRetorno := MicrosoftXmlSoapPost( cXml, cSoapAction, cWebservice )
*--
HB_MemoWrit('retorno.xml',cRetorno)
? cRetorno
RETURN


C:\teste>hbmk2 SOAP.prg hbwin.hbc hbct.hbc hbmxml.hbc xhb.hbc


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Consumir Webservice ( SOAP )

Mensagempor Alexandre Silva » 18 Out 2014 17:54

OPA !! já é um começo.. Erro xml 11
o que seria ? nao tenho a tabela desses erros...
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar de usuário

Alexandre Silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 351
Data de registro: 26 Mar 2007 00:16
Cidade/Estado: Itapema - SC
Curtiu: 34 vezes
Mens.Curtidas: 6 vezes

Consumir Webservice ( SOAP )

Mensagempor Itamar M. Lins Jr. » 18 Out 2014 18:02

Pois é, tem versões dessa string ai.
To use SOAP 1.1 encoding, use the value http://schemas.xmlsoap.org/soap/encoding/
To use SOAP 1.2 encoding, use the value http://www.w3.org/2001/12/soap-encoding


http://www.tutorialspoint.com/soap/soap_encoding.htm

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Consumir Webservice ( SOAP )

Mensagempor Itamar M. Lins Jr. » 18 Out 2014 18:53

Aê gafanhoto!
Seu XML está muito diferente do exemplo dele!!!
O dele está assim:
Como é para ser:
         <usuario xsi:type="xsd:string">TESTES</usuario>
         <senha xsi:type="xsd:string">BASE</senha>
         <codatm xsi:type="xsd:string">11340073</codatm>
         <xmlCTe xsi:type="xsd:string">

Como vc fez:
<usuario>TESTES</usuario><senha>BASE</senha><codatm>11340073</codatm><xmlCTe>

Ai só Jesus na CAUSA!!!!
Formata seu XML p/ ficar igual ao exemplo dele com quebra de linha!!

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Consumir Webservice ( SOAP )

Mensagempor Alexandre Silva » 20 Out 2014 17:25

Estamos evoluindo..... agora com o CRLF
Fico na duvida sobre o envelope... todos esses comandos foi o Quintas que montou...
Por exemplo aqui: xmlns:urn="urn:xmethods-delayed-quotes", nao deveria ter um comando ?


<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:xmethods-delayed-quotes">
<soapenv:Header/>
<soapenv:Body>
<urn:averbaCTe20Request 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/" xmlns:tns="urn:ATMWebSvr" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:ATMWebSvr">
<service name="ATMWebSvr">
<port name="ATMWebSvrPort" binding="tns:ATMWebSvrBinding">
<soap:address location="http://homologacao.averba.com.br/webserver/index.soap"/>
</port>
</service>
<usuario xsi:type="xsd:string">TESTES</usuario>
<senha xsi:type="xsd:string">BASE</senha>
<codatm xsi:type="xsd:string">11340073</codatm>
<xmlCTe xsi:type="xsd:string">
<![CDATA[


PS:
Continua retornando:
<DESCCOMPLETA>Usuario nao informado</DESCCOMPLETA>

[url]
http://homologacao.averba.com.br/webserver/index.soap#
[/url]


Name: averbaCTe20
Binding: ATMWebSvrBinding
Endpoint: http://homologacao.averba.com.br/webserver/index.soap
SoapAction: urn:ATMWebSvr#averbaCTe20
Style: rpc
Input:
use: encoded
namespace: urn:ATMWebSvr
encodingStyle: http://schemas.xmlsoap.org/soap/encoding/
message: averbaCTe20Request
parts:
usuario: xsd:string
senha: xsd:string
codatm: xsd:string
xmlCTe: xsd:string
Output:
use: encoded
namespace: urn:ATMWebSvr
encodingStyle: http://schemas.xmlsoap.org/soap/encoding/
message: averbaCTe20Response
parts:
return: xsd:string
Namespace: urn:ATMWebSvr
Transport: http://schemas.xmlsoap.org/soap/http
Documentation: Interface de averbação eletrônica AT&M para CTe. Versão do WebServer 2

Anexos
SOAP.PRG
(3.7 KiB) Baixado 147 vezes
vai.xml
(9.05 KiB) Baixado 137 vezes
meux.xml
(7.95 KiB) Baixado 108 vezes
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar de usuário

Alexandre Silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 351
Data de registro: 26 Mar 2007 00:16
Cidade/Estado: Itapema - SC
Curtiu: 34 vezes
Mens.Curtidas: 6 vezes

Consumir Webservice ( SOAP )

Mensagempor Toledo » 20 Out 2014 19:38

Alexandre, faz um teste com este SOAP.PRG em anexo. Para compilar veja início do SOAP.PRG e use Harbour 3.2 ou superior.

Abraços,
Anexos
soap.zip
(21.65 KiB) Baixado 449 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 de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Consumir Webservice ( SOAP )

Mensagempor Alexandre Silva » 20 Out 2014 19:52

Muito obrigado ficou certo
:))
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar de usuário

Alexandre Silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 351
Data de registro: 26 Mar 2007 00:16
Cidade/Estado: Itapema - SC
Curtiu: 34 vezes
Mens.Curtidas: 6 vezes

Consumir Webservice ( SOAP )

Mensagempor informaisvrb » 24 Abr 2015 10:48

amigo Alexandre Silva, estou precisando de uma ajuda sua com algo parecido com o que voce fez.

Tenho que fazer quase ou o mesmo que voce fez para a seguradora

http://generali.averbweb.net.br/documentacao#arquivoxml

Será que pode me ajudar.

me adiciona o skype, ou me manda um e-mail com seu contato (se puder é claro)

Nota de Moderação:
por Toledo: Leia as Regras do fórum:

11 - Não é permitido postar o e-mail pessoal com o objetivo de receber ou oferecer qualquer auxílio que poderia ser feito pelo Fórum. O Fórum foi criado para intermediar a comunicação entre os participantes, não servir de mural de recados.
informaisvrb
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 10
Data de registro: 09 Jun 2013 15:00
Cidade/Estado: VISCONDE DO RIO BRANCO
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Consumir Webservice ( SOAP )

Mensagempor gilbertosilverio » 15 Mar 2016 10:03

Bom dia Amigos,

Estou tentado, baseado neste exemplo, me comunicar com um servidor web, da BIONEXO, mais como informações do manual dele são muito genericas, não estou conseguindo.

Como não conheço nada deste tipo de comunicação, estou mais perdido que cachorro em dia de mudança... rsrsrs

Se alguem, ja fez este tipo de integração, com a Bionexo, e puder me ajudar.

Pela rotina passada pelo TOLEDO, imagino que seja possível, fazer esta comunicação.

No Manual deles, somente e informado:

Métodos e Retornos
Abaixo descrição dos métodos e retornos disponíveis para a comunicação com a plataforma Bionexo.

- String post (String user, String password, String operation, String parameters, xml)
Método genérico para todas as operações de envio (POST). Os parâmetros devem ser passados
no string ou um objeto DataHandler. Seu retorno é feito por meio de um bloco padrão que
varia de acordo a operação e parâmetro(s) passado(s) que está(ão) comentado(s) abaixo.
Parâmetros:
String post (‘String user’, ‘String password’, ‘String operation’, ‘String parameters’, xml)
Exemplo:
post (‘teste’, ’1234’, ’WHS’, ‘LAYOUT=WH’, <XML file/>)

- String request (String user, String password, String operation, String parameters)
Método genérico para todas as operações de busca de informações(GET). Os parâmetros
devem ser enviados no formato padrão HTTP ou HTTPS. Seu retorno é feito por meio de um
bloco padrão que varia de acordo a operação e parâmetros passados que estão comentados
abaixo.

Como montar o método:
String request (String User, String Password, String operation, String parameters)
Exemplo:
String request (teste,1234,WHS, LAYOUT=WH;TOKEN=1234)

Agradeço, qualquer ajuda ou dica.

Gilberto Silverio.
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

Consumir Webservice ( SOAP )

Mensagempor JoséQuintas » 15 Mar 2016 10:47

Agora que vi, o webservice do MA é a única UF que tem parâmetros parecidos com o primeiro post.
Esse negócio de binding e port.

https://sistemas.sefaz.ma.gov.br/wscadastro/CadConsultaCadastro2?wsdl

Precisa certificado pra poder abrir o endereço, mas mostra o texto abaixo.
Depois vou tentar aplicar a mesma solução daqui.

<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.8 svn-revision#13980. --><!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.8 svn-revision#13980. --><definitions 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:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2" name="CadConsultaCadastro2">
<types>
<xsd:schema>
<xsd:import namespace="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2" schemaLocation="https://sistemas.sefaz.ma.gov.br:443/wscadastro/CadConsultaCadastro2?xsd=1"/>
</xsd:schema>
</types>
<message name="consultaCadastro2">
<part name="nfeDadosMsg" element="tns:nfeDadosMsg"/>
<part name="nfeCabecMsg" element="tns:nfeCabecMsg"/>
</message>
<message name="consultaCadastro2Response">
<part name="consultaCadastro2Result" element="tns:consultaCadastro2Result"/>
<part name="nfeCabecMsg" element="tns:nfeCabecMsg"/>
</message>
<portType name="CadConsultaCadastro2Soap">
<operation name="consultaCadastro2" parameterOrder="nfeDadosMsg nfeCabecMsg">
<input wsam:Action="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2/consultaCadastro2" message="tns:consultaCadastro2"/>
<output wsam:Action="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2/CadConsultaCadastro2Soap/consultaCadastro2Response" message="tns:consultaCadastro2Response"/>
</operation>
</portType>
<binding name="CadConsultaCadastro2Soap12Binding" type="tns:CadConsultaCadastro2Soap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="consultaCadastro2">
<soap12:operation soapAction="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2/consultaCadastro2"/>
<input>
<soap12:body use="literal" parts="nfeDadosMsg"/>
<soap12:header message="tns:consultaCadastro2" part="nfeCabecMsg" use="literal"/>
</input>
<output>
<soap12:body use="literal" parts="consultaCadastro2Result"/>
<soap12:header message="tns:consultaCadastro2Response" part="nfeCabecMsg" use="literal"/>
</output>
</operation>
</binding>
<service name="CadConsultaCadastro2">
<port name="CadConsultaCadastro2Soap12" binding="tns:CadConsultaCadastro2Soap12Binding">
<soap12:address location="https://sistemas.sefaz.ma.gov.br:443/wscadastro/CadConsultaCadastro2"/>
</port>
</service>
</definitions>
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: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Consumir Webservice ( SOAP )

Mensagempor gilbertosilverio » 24 Mar 2016 10:54

Ola Jose Quintas,

Obrigado pela sua resposta.

Entrei em contato como suporte técnico da Bionexo, e eles me passaram este modelo de comunicação via SOAP, mais não tenho nem ideia de por onde começar, veja se voce consegue me ajudar ha como devo proceder, pois não consigo enxergar a logica de como funciona esta comunicação via webserver.

<con:definitionCache type="TEXT" rootPart="https://www.bionexo.com.br/ws2/BionexoBean?wsdl" xmlns:con="http://eviware.com/soapui/config"><con:part><con:url>https://www.bionexo.com.br/ws2/BionexoBean?wsdl</con:url><con:content><![CDATA[<definitions name="BionexoBeanService" targetNamespace="http://webservice.bionexo.com/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.bionexo.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <types/>
  <message name="BionexoInterface_requestResponse">
    <part name="return" type="xsd:string"/>
  </message>
  <message name="BionexoInterface_request">
    <part name="login" type="xsd:string"/>
    <part name="password" type="xsd:string"/>
    <part name="operation" type="xsd:string"/>
    <part name="parameters" type="xsd:string"/>
  </message>
  <message name="BionexoInterface_post">
    <part name="login" type="xsd:string"/>
    <part name="password" type="xsd:string"/>
    <part name="operation" type="xsd:string"/>
    <part name="parameters" type="xsd:string"/>
    <part name="xml" type="xsd:string"/>
  </message>
  <message name="BionexoInterface_postResponse">
    <part name="return" type="xsd:string"/>
  </message>
  <portType name="BionexoInterface">
    <operation name="post" parameterOrder="login password operation parameters xml">
      <input message="tns:BionexoInterface_post"/>
      <output message="tns:BionexoInterface_postResponse"/>
    </operation>
    <operation name="request" parameterOrder="login password operation parameters">
      <input message="tns:BionexoInterface_request"/>
      <output message="tns:BionexoInterface_requestResponse"/>
    </operation>
  </portType>
  <binding name="BionexoInterfaceBinding" type="tns:BionexoInterface">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="post">
      <soap:operation soapAction=""/>
      <input>
        <soap:body namespace="http://webservice.bionexo.com/" use="literal"/>
      </input>
      <output>
        <soap:body namespace="http://webservice.bionexo.com/" use="literal"/>
      </output>
    </operation>
    <operation name="request">
      <soap:operation soapAction=""/>
      <input>
        <soap:body namespace="http://webservice.bionexo.com/" use="literal"/>
      </input>
      <output>
        <soap:body namespace="http://webservice.bionexo.com/" use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="BionexoBeanService">
    <port binding="tns:BionexoInterfaceBinding" name="BionexoPort">
      <soap:address location="http://app-br-ws-jboss.bionexo.com:8180/bionexo-wsEAR-bionexo-wsn/BionexoBean"/>
    </port>
  </service>
</definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache>

<con:soapui-project activeEnvironment="Default" name="WS_Bionexo" soapui-version="5.2.0" abortOnError="false" runType="SEQUENTIAL" resourceRoot="" id="6ea2ce5b-bcc8-4323-8e4b-3d252956fbca">
<con:settings/>
<con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="BionexoInterfaceBinding" type="wsdl" bindingName="{http://webservice.bionexo.com/}BionexoInterfaceBinding" soapVersion="1_1" anonymous="optional" definition="https://www.bionexo.com.br/ws2/BionexoBean?wsdl" id="547aba4c-2faf-4e3e-b7c5-2056f3169672">
<con:settings/>
<con:definitionCache type="TEXT" rootPart="https://www.bionexo.com.br/ws2/BionexoBean?wsdl">
<con:part>
<con:url>https://www.bionexo.com.br/ws2/BionexoBean?wsdl</con:url>
<con:content><definitions name="BionexoBeanService" targetNamespace="http://webservice.bionexo.com/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.bionexo.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <types/> <message name="BionexoInterface_requestResponse"> <part name="return" type="xsd:string"/> </message> <message name="BionexoInterface_request"> <part name="login" type="xsd:string"/> <part name="password" type="xsd:string"/> <part name="operation" type="xsd:string"/> <part name="parameters" type="xsd:string"/> </message> <message name="BionexoInterface_post"> <part name="login" type="xsd:string"/> <part name="password" type="xsd:string"/> <part name="operation" type="xsd:string"/> <part name="parameters" type="xsd:string"/> <part name="xml" type="xsd:string"/> </message> <message name="BionexoInterface_postResponse"> <part name="return" type="xsd:string"/> </message> <portType name="BionexoInterface"> <operation name="post" parameterOrder="login password operation parameters xml"> <input message="tns:BionexoInterface_post"/> <output message="tns:BionexoInterface_postResponse"/> </operation> <operation name="request" parameterOrder="login password operation parameters"> <input message="tns:BionexoInterface_request"/> <output message="tns:BionexoInterface_requestResponse"/> </operation> </portType> <binding name="BionexoInterfaceBinding" type="tns:BionexoInterface"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="post"> <soap:operation soapAction=""/> <input> <soap:body namespace="http://webservice.bionexo.com/" use="literal"/> </input> <output> <soap:body namespace="http://webservice.bionexo.com/" use="literal"/> </output> </operation> <operation name="request"> <soap:operation soapAction=""/> <input> <soap:body namespace="http://webservice.bionexo.com/" use="literal"/> </input> <output> <soap:body namespace="http://webservice.bionexo.com/" use="literal"/> </output> </operation> </binding> <service name="BionexoBeanService"> <port binding="tns:BionexoInterfaceBinding" name="BionexoPort"> <soap:address location="http://app-br-ws-jboss.bionexo.com:8180/bionexo-wsEAR-bionexo-wsn/BionexoBean"/> </port> </service> </definitions></con:content>
<con:type>http://schemas.xmlsoap.org/wsdl/</con:type>
</con:part>
</con:definitionCache>
<con:endpoints>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
</con:endpoints>
<con:operation isOneWay="false" action="" name="post" bindingOperationName="post" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional" id="1bf7de46-8a8e-4d4b-b6b3-ab27a46d85b2">
<con:settings/>
<con:call id="5201eefd-4f4f-4dea-9522-0b8a94879a8d" name="WHS - Upload Resposta">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:post> <login></login> <password></password> <operation>WHS</operation> <parameters>LAYOUT=WH</parameters> <xml> <Resposta> <Cabecalho> <Id_Pdc>33200164</Id_Pdc> <CNPJ_Hospital>04.069.709/0001-02</CNPJ_Hospital> <Faturamento_Minimo>750</Faturamento_Minimo> <Prazo_Entrega>3</Prazo_Entrega> <Validade_Proposta>31/12/2016</Validade_Proposta> <Id_Forma_Pagamento>4</Id_Forma_Pagamento> <Frete>CIF</Frete> <Observacoes/> </Cabecalho> <Itens_Pdc> <Item_Pdc> <Sequencia>1</Sequencia> <Id_Artigo>44010010</Id_Artigo> <Codigo_Produto>01000146</Codigo_Produto> <Preco_Unitario>1.85</Preco_Unitario> <Fabricante>CREMER</Fabricante> <Embalagem>UNIDADE</Embalagem> <Quantidade_Embalagem>1</Quantidade_Embalagem> <Comentario/> <Campo_Extra> <Nome>Codigo_Produto_Fornecedor</Nome> <Valor>1515</Valor> </Campo_Extra> </Item_Pdc> </Itens_Pdc> </Resposta> </xml> </web:post> </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://webservice.bionexo.com/BionexoInterface/postRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
<con:call id="919e5bba-c065-4b05-a26b-84c3bbc00317" name="WHU - Alterar Cancelar Resposta">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:post> <login></login> <password></password> <operation>WHU</operation> <parameters>LAYOUT=WH</parameters> <xml> <Resposta> <Cabecalho> <Id_Pdc>33200164</Id_Pdc> <CNPJ_Hospital>04.069.709/0001-02</CNPJ_Hospital> <Faturamento_Minimo>750</Faturamento_Minimo> <Prazo_Entrega>3</Prazo_Entrega> <Validade_Proposta>31/12/2016</Validade_Proposta> <Id_Forma_Pagamento>4</Id_Forma_Pagamento> <Frete>CIF</Frete> <Observacoes/> </Cabecalho> <Itens_Pdc> <Item_Pdc> <Sequencia>1</Sequencia> <Id_Artigo>44010010</Id_Artigo> <Codigo_Produto>01000146</Codigo_Produto> <Preco_Unitario>1.85</Preco_Unitario> <Fabricante>CREMER</Fabricante> <Embalagem>UNIDADE</Embalagem> <Quantidade_Embalagem>1</Quantidade_Embalagem> <Comentario/> <Campo_Extra> <Nome>Codigo_Produto_Fornecedor</Nome> <Valor>1515</Valor> </Campo_Extra> </Item_Pdc> </Itens_Pdc> </Resposta> </xml> </web:post> </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://webservice.bionexo.com/BionexoInterface/postRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
</con:operation>
<con:operation isOneWay="false" action="" name="request" bindingOperationName="request" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional" id="e9429ce9-f80e-477b-b8cc-faa5a086e98a">
<con:settings/>
<con:call name="WJG - Download Itens Confirmado" id="30596d1e-33f6-4dc3-b95c-d20986d5f15e">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:request> <login></login> <password></password> <operation>WJG</operation> <parameters>TOKEN=1</parameters> </web:request> </soapenv:Body> </soapenv:Envelope></con:request>
<con:credentials>
<con:selectedAuthProfile>Basic</con:selectedAuthProfile>
<con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes>
<con:authType>Global HTTP Settings</con:authType>
</con:credentials>
<con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:wsaConfig mustUnderstand="NONE" version="200508" action="http://webservice.bionexo.com/BionexoInterface/requestRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
<con:call name="WGA - Download Prorrogados" id="f8a7bbef-4577-4eb1-a8f2-8264f5b774b6">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:request> <login></login> <password></password> <operation>WGA</operation> <parameters> DT_BEGIN=01/12/2015 16:40:00:00;DT_END=07/12/2015 16:50:59</parameters> </web:request> </soapenv:Body> </soapenv:Envelope></con:request>
<con:credentials>
<con:selectedAuthProfile>Basic</con:selectedAuthProfile>
<con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes>
<con:authType>Global HTTP Settings</con:authType>
</con:credentials>
<con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:wsaConfig mustUnderstand="NONE" version="200508" action="http://webservice.bionexo.com/BionexoInterface/requestRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
<con:call name="WKN - Status Itens" id="e1b8d1df-373f-46ba-9c49-aee198776ffc">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:request> <login></login> <password></password> <operation>WKN</operation> <parameters>ID=22995452</parameters> </web:request> </soapenv:Body> </soapenv:Envelope></con:request>
<con:credentials>
<con:selectedAuthProfile>Basic</con:selectedAuthProfile>
<con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes>
<con:authType>Global HTTP Settings</con:authType>
</con:credentials>
<con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:wsaConfig mustUnderstand="NONE" version="200508" action="http://webservice.bionexo.com/BionexoInterface/requestRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
<con:call name="WGG - Download PDC Aberto" id="e0fe6c87-7fec-4188-897b-5d8b4d59fb28">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:request> <login></login> <password></password> <operation>WGG</operation> <parameters>TOKEN=33200164</parameters> </web:request> </soapenv:Body> </soapenv:Envelope></con:request>
<con:credentials>
<con:selectedAuthProfile>Basic</con:selectedAuthProfile>
<con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes>
<con:authType>Global HTTP Settings</con:authType>
</con:credentials>
<con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:wsaConfig mustUnderstand="NONE" version="200508" action="http://webservice.bionexo.com/BionexoInterface/requestRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
<con:call name="WMG - Download Dados Cadastrais" id="ce2c7b93-099f-49c6-b070-cf55974bb4e9">
<con:settings>
<con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml-fragment/></con:setting>
</con:settings>
<con:encoding>UTF-8</con:encoding>
<con:endpoint>http://sandbox.bionexo.com.br/ws2/BionexoBean</con:endpoint>
<con:request><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.bionexo.com/"> <soapenv:Header/> <soapenv:Body> <web:request> <login></login> <password></password> <operation>WMG</operation> <parameters>CNPJ=11.111.111/0001-11</parameters> </web:request> </soapenv:Body> </soapenv:Envelope></con:request>
<con:credentials>
<con:selectedAuthProfile>Basic</con:selectedAuthProfile>
<con:addedBasicAuthenticationTypes>Basic</con:addedBasicAuthenticationTypes>
<con:authType>Global HTTP Settings</con:authType>
</con:credentials>
<con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
<con:jmsPropertyConfig/>
<con:wsaConfig mustUnderstand="NONE" version="200508" action="http://webservice.bionexo.com/BionexoInterface/requestRequest"/>
<con:wsrmConfig version="1.2"/>
</con:call>
</con:operation>
</con:interface>
<con:properties>
<con:property>
<con:name>teste</con:name>
<con:value>teste</con:value>
</con:property>
<con:property>
<con:name>WASE</con:name>
<con:value>WASE</con:value>
</con:property>
<con:property>
<con:name>XML</con:name>
<con:value><Pedido layout="WA"> <Cabecalho> <Requisicao>07052013-1214</Requisicao> <Titulo_Pdc>Teste pre pedido</Titulo_Pdc> <Id_Forma_Pagamento>1</Id_Forma_Pagamento> <Data_Vencimento>23/05/2013</Data_Vencimento> <Hora_Vencimento>23:59</Hora_Vencimento> <Moeda>Reais</Moeda> <Observacao/> <Campo_Extra> <Nome>SETOR</Nome> <Valor>CENTRAL DE ABAST FARMACEUTICO</Valor> </Campo_Extra> </Cabecalho> <Itens_Requisicao> <Item_Requisicao> <Codigo_Produto>45460</Codigo_Produto> <Descricao_Produto>Agua Oxigenada</Descricao_Produto> <Quantidade>1</Quantidade> </Item_Requisicao> </Itens_Requisicao> </Pedido></con:value>
</con:property>
<con:property>
<con:name>TOKEN</con:name>
<con:value>15551069</con:value>
</con:property>
</con:properties>
<con:wssContainer/>
<con:oAuth2ProfileContainer/>
<con:sensitiveInformation/>
</con:soapui-project>


Caso exista algum tutorial BASICO, de como funciona esta comunicação via SOAP/WEBSERVER, para que eu posa entender como funciona, por favor me passe.
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

Consumir Webservice ( SOAP )

Mensagempor JoséQuintas » 24 Mar 2016 12:06

A lógica é simples, os detalhes é que complicam.
É enviar um XML e receber outro como resposta.

Imagine um programa em Harbour:

PARAMETERS cXmlEntrada
   DO CASE
   CASE TemSoapAction( cXmlEntrada, "umacoisa" ) ;      cXmlSaida := SoapActionUmaCoisa(Parte(cXmlEntrada))
   CASE TemSoapAction( cXmlEntrada, "outracoisa" ) ;    cXmlSaida := SoapActionOutraCoisa(Parte(cXmlEntrada))
   OTHERWISE   ; cXmlSaida := "SoapAction inexistente"
   ENDCASE
   RETURN cXmlSaida


O Webservice é algo assim.
Tem a parte padrão de se comunicar com o webservice, e tem os detalhes adicionais que dependem do que o programador colocou.

Com certeza a forma de indicar "variáveis"/valores é padrão, mas os nomes e conteúdo não.

Agora vamos ao seu arquivo:
à primeira vista, te passaram exatamente o XML que o seu aplicativo deve gerar pra transmissão.

Um começo seria trocar os valores dele pelos seus valores, ou até tentar com o que veio

Por exemplo aqui: código do produto, descrição e quantidade
<Codigo_Produto>45460</Codigo_Produto> <Descricao_Produto>Agua Oxigenada</Descricao_Produto> <Quantidade>1</Quantidade>

Não sou expert no assunto. Só me acertei com os webservices de NFE, CTE, MDFE porque os manuais são bem completos, e todos seguem o mesmo esquema.
No caso acima do Maranhão, é o único diferente de todos os outros, ainda não resolvi.

Então pode dividir seu problema em duas partes:

1. Comunicar com o webservice

É basicamente entregar o XML e receber resposta.
Existe um formato válido para o chamado "envelope de soap".
<envelope>este aqui é um envelope<conteudo>aqui o conteúdo</conteudo></envelope>
o envelope precisa estar correto pra ser aceito

Dependendo do webservice, não há nenhum tipo de resposta enquanto no mínimo o envelope não estiver correto

2. O conteúdo ser aceito

o conteúdo são os valores propriamente ditos, que ficam embutidos no xml principal.
Comparando com o webservice do governo, seria uma nota fiscal preenchida corretamente.
No caso da NFE, retornam mensagens dizendo qual informação está preenchida errada.

Acho que a soapaction dá uma idéia do endereço de comunicação, é o ponto de partida:
http://webservice.bionexo.com/BionexoInterface/postRequest

E o ponto de partida do XML é esse XML que recebeu, pode tentar transmití-lo pra ver a resposta.

Mas é possível que tenha alguma senha ou identificação específica para sua empresa.

A partir daí é com quem tenha mais conhecimento do que eu.

A intenção foi só dar uma idéia do que se trata.
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: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Consumir Webservice ( SOAP )

Mensagempor JoséQuintas » 27 Mar 2019 09:43

Depois de tanto tempo do primeiro post, agora vou ter que fazer essa mesma comunicação da ATM, que iniciou o post.
O manual mostra detalhes do retorno, mas NENHUM detalhe do envio.

É engraçado como as seguradoras são umas bost. nisso.
Orientaram que o usuário deveria ficar consultando no programa deles pra ver o número da averbação, e digitar no manifesto.
Só quando perguntei do webservice, é que falaram dele.

Resumindo: os bost. da seguradora criaram um programa pra fazer tudo diferente, tá assim faz tempo, CULPA DELES, e agora pedem urgência, porque a empresa pode ser fiscalizada e multada, por não estar como a lei manda. Bem estilo Brasil....

Agora começar isso, que virou pra ontem....
Se alguém tiver alguma informação que ajude... é exatamente o averba da ATM, que apareceu no começo do tópico...
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: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Consumir Webservice ( SOAP )

Mensagempor JoséQuintas » 27 Mar 2019 10:53

Por enquanto peguei o PRG do Itamar, ajustei pro meu jeito, e testei com o endereço oficial, mas... vou precisar aguardar usuário/senha e ambiente de teste pra ir em frente.


FUNCTION main()

   LOCAL cXml, cSoapAction, cWebservice, cOperation, cRetorno

   SetMode(40,100)
   CLS
   cWebservice := "webservice.averba.com.br/20"
   cSoapAction := "urn:ATMWebSvr#averbaCTe20"
   cOperation  := "averbaCTe20"
   cXmlDoc     := HB_Memoread( "meux.xml" )
   cXmlEnvio   := [         <usuario xsi:type="xsd:string">TESTES</usuario>] + hb_eol()
   cXmlEnvio   += [         <senha xsi:type="xsd:string">BASE</senha>] + hb_eol()
   cXmlEnvio   += [         <codatm xsi:type="xsd:string">11340073</codatm>] + hb_eol()
   cXmlEnvio   += [         <xmlCTe xsi:type="xsd:string"><!]
   cXmlEnvio   += "[" + [CDATA] + "[" + cXmlDoc + "]]" + [></xmlCTe>] + hb_eol()
   cXmlSoap    := SoapEnvelope( cXmlEnvio, cOperation )
   cXmlRetorno := MicrosoftXmlSoapPost( cXmlSoap, cSoapAction, cWebservice )
   ? cXmlRetorno

   RETURN

FUNCTION MicrosoftXmlSoapPost( cXmlSoap, cSoapAction, cWebService )

   LOCAL oServer, oDOMDoc, nCont, cRetorno := "*ERRO*", cXmlRetorno := ""

   oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP")
   oServer:Open( "POST", cWebService, .F. )
   oServer:SetRequestHeader( "SOAPAction", cSoapAction )
   oServer:SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" )
   oServer:send( cXmlSoap )
   oServer:WaitForResponse( 1000 )
   cRetorno := oServer:responseText

   IF ValType( cRetorno ) == "C"
      cXmlRetorno := cRetorno
   ELSEIF cRetorno == NIL
      cXmlRetorno := "*ERRO*"
   ELSE
      cXmlRetorno := ""
      FOR nCont = 1 TO Len( cRetorno )
         cXmlRetorno += Chr( cRetorno[ nCont ] )
      NEXT
   ENDIF

   RETURN cXmlRetorno

FUNCTION SoapEnvelope( cXml, cOperation )

   LOCAL cXmlEnvelope

   cXmlEnvelope := [<?xml version="1.0" encoding="utf-8"?>] + hb_Eol()
   cXmlEnvelope += [<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ]
   cXmlEnvelope += [xmlns:xsd="http://www.w3.org/2001/XMLSchema" ]
   cXmlEnvelope += [ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ]
   cXmlEnvelope += [xmlns:urn="urn:ATMWebSvr">] + hb_eol()
   cXmlEnvelope += [   <soapenv:Header/>] + hb_Eol()
   cXmlEnvelope += [   <soapenv:Body>] + hb_Eol()
   cXmlEnvelope += [      <urn:] + cOperation
   cXmlEnvelope += [ soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">]  + hb_Eol()
   cXmlEnvelope += cXml
   cXmlEnvelope += [      </urn:] + cOperation + [>] + hb_eol()
   cXmlEnvelope += [   </soapenv:Body>] + hb_Eol()
   cXmlEnvelope += [</soapenv:Envelope>]

   RETURN cXmlEnvelope

FUNCTION AppUserName(); RETURN ""
FUNCTION AppVersaoExe(); RETURN ""


Agora é aguardar.
Mas queria destacar uma coisa, que só o Harbour tem !!!!

   oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP")


'Sem declarar versão, entra automaticamente a que o Windows escolher.

indicando 5.0
Error WINOLE/1007 Erro de sistema: -2147012890.
(0x80072EE6): msxml5.dll (DOS Error -2147352567)
Called from WIN_OLEAUTO:OPEN(0)
Called from MICROSOFTXMLSOAPPOST(27)
Called from MAIN(17)


sem indicar versão
Error WINOLE/1007 Erro de sistema: -2147012890.
(0x80072EE6): msxml3.dll (DOS Error -2147352567)
Called from WIN_OLEAUTO:OPEN(0)
Called from MICROSOFTXMLSOAPPOST(27)
Called from MAIN(17)


Sem indicar versão foi usada a 3.0 (msxml3.dll).
O Windows tem a versão 3, 4 e 6.
Sacanagem ou não, a versão 5 só tem no Office, e é a única que trata assinatura digital.
Acho que não é o caso aqui, mas só vou confirmar depois que tiver usuário/senha pra fazer mais testes.

o DomDoc: talvez seja interessante se o XML não for gerado pelo aplicativo, pra evitar problemas de codepage, mas acho que também não é o caso ainda.
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: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 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