ENVIAR ARQUIVO XML PARA WEBSERVICE EM VB6

 Tópico anterior Próximo tópico Novo tópico

ENVIAR ARQUIVO XML PARA WEBSERVICE EM VB6

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#488320 - 13/04/2019 14:36:27

BETOOLIVEIRA7
BELEM
Cadast. em:Março/2019


Alguém sabe como enviar um arquivo XML pelo VB6 para um webservice.



#488336 - 14/04/2019 12:31:22

TUNUSAT
SAMPA
Cadast. em:Dezembro/2003


Última edição em 14/04/2019 12:32:42 por TUNUSAT

BETOOLIVEIRA7,

   Vou passar uns links para você olhar...

==================================
Fernanda Simões
Boa noite
Preciso enviar um arquivo xml para o webservice do SGNPC como segue abaixo os parametros.
Como eu poderia adaptar para fazer funcionar no vb6

ENVIAR

POST /sngpc/webservice/sngpc.asmx HTTP/1.1
Host : homologacao.anvisa.gov.br

Content-Type: text/xml; charset-utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/EnviarArquivoSNGPC"
<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s>
   <soap:Body>
     <EnviarArquivoSNGPC xmlns="http://tempuri.org/">
        <Email>String</Email>
        <Senha>String</Senha>
        <Arquivo>String</Arquivo>
        <HashIdentificacao>string</HashIdentificacao>
     </EnviarArquivoSNGPC>
   </soap:Body>
</soap:Envelope>


CONSULTAR

POST /sngpc/webservice/sngpc.asmx HTTP/1.1
Host : sngpc.anvisa.gov.br
Content-Type: text/xml; charset-utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/ConsultaDadosArquivoSNGPC"

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
     <ConsultaDadosArquivoSNGPC xmlns="http://tempuri.org/">
        <Email>string</Email>
        <Senha>string</Senha>
        <CNPJ>string</CNPJ>
        <Hash>string</Hash>
     </ConsultaDadosArquivoSNGPC>
   </soap:Body>
</soap:Envelope>


https://social.msdn.microsoft.com/Forums/pt-BR/d03dc9ed-cd46-41fb-9ac5-cab44877fe89/enviar-xml-para-web-service-usando-vb6?forum=vsvbasicpt

==================================
Transmitir um arquivo xml por um Web Services

https://social.msdn.microsoft.com/Forums/pt-BR/6c44f9ea-5c5a-4315-ae82-a03ab03e940a/transmitir-um-arquivo-xml-por-um-web-services?forum=504
==================================
WebService com XML

https://forum.imasters.com.br/topic/375175-webservice-com-xml/
==================================
Como ler web service XML no VB6?

Você pode usar XMLHTTPRequest, que funciona bem semelhante ao do javascript e para fazer o parse do XML pode usa:


Set doc = CreateObject("MSXML2.DOMDocument")
doc.loadXML(xhr.responseText)


E o Xpath pode ser útil pra selecionar os nodes necessários:

Set nodes = doc.SelectNodes("//IPAddress")


Um exemplo "síncrono":


Dim xhr, method, url, contents, formatcontent, doc

Set xhr = CreateObject("MSXML2.XMLHTTP")

method = "GET" 'Escolhe o método HTTP de envio
url = "https://ws.printwayy.com/api/Printer?api_token=1F61D333-CCA5-423A-A764-F8577119A9FE&company_token=&serialNumbers=AK18054352&initialDate=&endDate=" 'url da API
contents = "" 'conteudo
formatcontent = "application/json" 'Se a API usar outro formato basta alterar aqui

xhr.Open method, url, False

'Necessário pra sua API retornar XML ao invés de JSON
xhr.setRequestHeader "Accept", "application/xml"

If method = "POST" Or method = "PUT" Then
    xhr.setRequestHeader "Content-Type", formatcontent
    xhr.setRequestHeader "Content-Length", Len(contents)
    xhr.send contents
Else
    xhr.send
End If

If xhr.status < 200 Or xhr.status >= 300 Then
    'Algo falhou, as vezes pode haver uma descrição em `xhr.responseText` ou pode retornar vazio, o `xhr.status` indica o tipo de erro
    MsgBox "Erro HTTP:" & xhr.status & " - Detalhes: " & xhr.responseText
Else
    'Faz o parse da String para XML
    Set doc = CreateObject("MSXML2.DOMDocument")
    doc.loadXML(xhr.responseText)

    'Seleciona com XPATH
    Set nodes = doc.SelectNodes("//IPAddress")

    MsgBox "Elementos encontrados para IPAddress: " & nodes.length

    For Each node In nodes
        MsgBox "Endereço IP: " & node.text
    Next
End If


XmlHttpRequest assíncrono
Pra usar XMLHTTP assíncrono você pode usar:


Set xhr = CreateObject("MSXML2.XMLHTTP")
xhr.open hMethod, hUrl, True


E deve usar a propriedade:

xhr.onreadystatechange = GetRef([Nome de uma Function ou Sub])



Dim hMethod, hUrl, hFormat, hContents, hAccepts, xhr

'url da API
hUrl = "https://ws.printwayy.com/api/Printer?api_token=1F61D333-CCA5-423A-A764-F8577119A9FE&company_token=&serialNumbers=AK18054352&initialDate=&endDate="

hMethod   = "GET"              'Metodo HTTP
hAccepts  = ""                 'Necessário pra sua API retornar XML ao invés de JSON
hContents = ""                 'Conteúdo em requisições POST/PUT
hAccepts  = "application/xml"  'http accepts

MsgBox hUrl

Set xhr = CreateObject("MSXML2.XMLHTTP")

Sub doParseXml(xmlStr)
    'Faz o parse da String para XML
    Set doc = CreateObject("MSXML2.DOMDocument")
    doc.loadXML(xmlStr)

    'Seleciona com XPATH
    Set nodes = doc.SelectNodes("//IPAddress")

    MsgBox "Elementos encontrados para IPAddress: " & nodes.length

    For Each node In nodes
      MsgBox "Endereço IP: " & node.text
    Next
End Sub

'Recebe assincronamente o resultado
Sub doReadyStateChange()
    If xhr.readyState = 4 Then
        If xhr.status < 200 Or xhr.status >= 300 Then
            MsgBox "Erro HTTP:" & xhr.status & " - Detalhes: " & xhr.responseText
        Else
            doParseXml xhr.responseText
        End If
    End If
End Sub

xhr.onreadystatechange = GetRef("doReadyStateChange")

xhr.open hMethod, hUrl, True

If hAccepts <> "" Then
    xhr.setRequestHeader "Accept", hAccepts
End If

If hMethod = "POST" Or hMethod = "PUT" Then
    'Accpet HTTP request
    If hFormat = "" Then
        xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    Else
        xhr.setRequestHeader "Content-Type", hFormat
    End If

    xhr.setRequestHeader "Content-Length", Len(hContents)
    xhr.send hContents
Else
    xhr.send
End If
  



https://pt.stackoverflow.com/questions/239728/como-ler-web-service-xml-no-vb6

==================================
(Visual Basic 6.0) SOAP Web Service (HTTP POST)
ActiveX for 32-bit and 64-bit Windows


Dim http As New ChilkatHttp

Dim success As Long

'  Any string unlocks the component for the 1st 30-days.
success = http.UnlockComponent("Anything for 30-day trial")
If (success <> 1) Then
    Text1.Text = Text1.Text & http.LastErrorText & vbCrLf
    Exit Sub
End If

'  This example uses a live web service at:
'  http://www.webservicex.net/uklocation.asmx
'  It gets the UK town,Postcode and County by Postcode(First Section of Post Code)

'  The SOAP XML will look like this:
'  <?xml version="1.0" encoding="utf-8"?>
'  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
'    <soap:Body>
'      <GetUKLocationByPostCode xmlns="http://www.webserviceX.NET">
'        <PostCode>string</PostCode>
'      </GetUKLocationByPostCode>
'    </soap:Body>
'  </soap:Envelope>

'  For this example's sake, we'll load the XML from a file.  We'll test using PostCode "E3".
'  The SOAP XML for this example may be downloaded from:
'  http://www.chilkatsoft.com/testData/ukPostCodeSoap.xml
Dim xml As New ChilkatXml
success = xml.LoadXmlFile("ukPostCodeSoap.xml")
If (success <> 1) Then
    Text1.Text = Text1.Text & xml.LastErrorText & vbCrLf
    Exit Sub
End If

Dim strXml As String
strXml = xml.GetXml()

Dim resp As ChilkatHttpResponse
Dim responseStatusCode As Long

'  We'll need to add this in the HTTP header:
'  SOAPAction: "http://www.webserviceX.NET/GetUKLocationByPostCode"
http.SetRequestHeader "SOAPAction","http://www.webserviceX.NET/GetUKLocationByPostCode"

'  Some services expect the content-type in the HTTP header to be "application/xml" while
'  other expect text/xml.  The default sent by Chilkat is "application/xml", but this web service
'  expects "text/xml".  Therefore, change the content-type:
http.SetRequestHeader "Content-Type","text/xml; charset=utf-8"

'  The endpoint for this soap service is:
Dim endPoint As String
endPoint = "http://www.webservicex.net/uklocation.asmx"

'  Note: This particular web service was live and functioning at the time this example
'  was written.  It is possible that as time progresses, this web service will no longer
'  be availble...
Set resp = http.PostXml(endPoint,strXml,"utf-8")
If (resp Is Nothing ) Then
    Text1.Text = Text1.Text & http.LastErrorText & vbCrLf

    Text1.Text = Text1.Text & "LastHeader:" & vbCrLf
    Text1.Text = Text1.Text & http.LastHeader & vbCrLf
Else

    responseStatusCode = resp.StatusCode
    '  You may wish to verify that the responseStatusCode equals 200...
    Text1.Text = Text1.Text & "Response Status Code: " & responseStatusCode & vbCrLf

    '  You may examine the exact HTTP header sent with the POST like this:
    Text1.Text = Text1.Text & "LastHeader:" & vbCrLf
    Text1.Text = Text1.Text & http.LastHeader & vbCrLf

    '  Examine the XML returned by the web service:
    Text1.Text = Text1.Text & "XML Response:" & vbCrLf
    Dim xmlResp As New ChilkatXml
    success = xmlResp.LoadXml(resp.BodyStr)
    '  Assume the LoadXml is successful...
    '  Get rid of the SOAP wrappings and get to the meat of this particular response.
    '  The TagContent method returns the content of the 1st node in the XML document
    '  having a specific tag:
    Dim unwrappedXml As String
    unwrappedXml = xmlResp.TagContent("GetUKLocationByPostCodeResult")
    Text1.Text = Text1.Text & unwrappedXml & vbCrLf

    '  The unwrapped XML could be loaded into an XML object and parsed...
    Dim xmlMeat As New ChilkatXml
    success = xmlMeat.LoadXml(unwrappedXml)

    '  ...

End If


https://www.example-code.com/vb/soap_web_service.asp
==================================

   Mas se tudo der errado, pegue um exemplo em VB.Net ou em C# gere uma LIBRARY e tente usar no VB6.

[]'s,
Tunusat.


Haja, pois, o que houver, ampliem-se obstáculos, agigantem-se problemas, intensifiquem-se lutas ou se agravem provações, trabalha sempre no bem de todos, porque, trabalhando na Seara do Bem, podes conservar a certeza de que Deus te sustentará. Emmanuel.

#488360 - 15/04/2019 10:07:40

BETOOLIVEIRA7
BELEM
Cadast. em:Março/2019


Obrigado pela atenção TUNUSAT.
Irei explicar detalhadamente para ver se você pode me ajudar.

Preciso enviar para um webservice (https://consultas-dev.tjpa.jus.br/wsintegracaoselodigital/IntegracaoSeloDigital.asmx?op=PrestacaoContas) um arquivo XML, que poderá ser Attached ou Gerando no momento do envio.

Segue o exemplo do XML:
<?xml version="1.0" encoding="UTF-8"?>
<PrestacaoContas xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" xsi:noNamespaceSchemaLocation="PrestacaoContas.xsd">
<Cabecalho>
  <CodigoComarca>1</CodigoComarca>
  <CodigoCartorio>243</CodigoCartorio>
  <DataTransmissao>12042019</DataTransmissao>
  <HoraTransmissao>173016</HoraTransmissao>
  <MesAnoLote>042019</MesAnoLote>
</Cabecalho>
<AtoPraticado>
  <SequencialAto>1</SequencialAto>
  <CodigoAto>162</CodigoAto>
  <VersaoTabela>2019</VersaoTabela>
  <DataRecolhimento>12042019</DataRecolhimento>
  <ValorTransacao>150.00</ValorTransacao>
  <ValorEmolumento>34.10</ValorEmolumento>
  <ValorFRJ>5.12</ValorFRJ>
  <ValorFRC>0.85</ValorFRC>
  <Natureza>Intimacao</Natureza>
  <Titulo>6687</Titulo>
  <Livro>1015</Livro>
  <FolhaOuFicha>24</FolhaOuFicha>
  <Termo></Termo>
  <Protocolo>638544</Protocolo>
  <Apontamento></Apontamento>
  <Certidao></Certidao>
  <NumeroOrdem></NumeroOrdem>
  <NumeroProcedimentos></NumeroProcedimentos>
  <SelosAto>
   <SequencialAto>1</SequencialAto>
   <CodigoSelo>100528</CodigoSelo>
   <Tipo>101</Tipo>
   <Serie>A</Serie>
   <CodigoSeguranca>82500100000025306293010230</CodigoSeguranca>
  </SelosAto>
  <PessoasAto>
   <SequencialAto>1</SequencialAto>
   <NumeroDocumento>12345678910</NumeroDocumento>
   <TipoDocumento>1</TipoDocumento>
   <TipoParticipacao>1002</TipoParticipacao>
   <NomePessoa>QUALQUER NOME</NomePessoa>
  </PessoasAto>
  <AtoPraticadoFilho> </AtoPraticadoFilho>
</AtoPraticado>
<Rodape>
  <QuantidadeAtos>1</QuantidadeAtos>
  <QuantidadeSelos>1</QuantidadeSelos>
  <ValorTotalTransacao>150.00</ValorTotalTransacao>
  <ValorTotalEmolumentos>34.10</ValorTotalEmolumentos>
  <ValorTotalFRJ>5.12</ValorTotalFRJ>
  <ValorTotalFRC>0.85</ValorTotalFRC>
</Rodape>
</PrestacaoContas>

Preciso de uma rotina em VB6. Veja se voce pode me ajudar.



#488361 - 15/04/2019 11:13:46

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Sua "explicação detalhada" consiste basicamente no endpoint e XML que quer enviar. O TUNUSAT passou uma série de coisas pra ler e com certeza vai te ajudar.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#488362 - 15/04/2019 13:24:49

BETOOLIVEIRA7
BELEM
Cadast. em:Março/2019


Desculpem o incomodo, mas já visitei os referidos links e muitos outros, porem não estou conseguindo finalizar o envio.
A mensagem de erro que aparece é esta: "Server was unable to process request. ---> Root element is missing."

Segue o meu código em VB6 usando o soap12

Private Sub cmdEnviar_Click()
    Dim strSoapAction As String
    Dim strUrl As String
    Dim strXml As String
    
    txtOutput.Text = ""
    strUrl = "https://consultas-dev.tjpa.jus.br/wsintegracaoselodigital/IntegracaoSeloDigital.asmx"

    strXml = "<?xml version=""1.0"" encoding=""UTF-8""?>" & "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" & xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"">" & "<soap12:Body>" & _
    "<PrestacaoContas xmlns=""http://tempuri.org"">" & "<Cabecalho>" & "<CodigoComarca>1</CodigoComarca>" & "<CodigoCartorio>243</CodigoCartorio>" & "<DataTransmissao>12042019</DataTransmissao>" & "<HoraTransmissao>173016</HoraTransmissao>" & "<MesAnoLote>042019</MesAnoLote>" & "</Cabecalho>" & _
    "<AtoPraticado>" & "<SequencialAto>1</SequencialAto>" & "<CodigoAto>162</CodigoAto>" & "<VersaoTabela>2019</VersaoTabela>" & "<DataRecolhimento>12042019</DataRecolhimento>" & "<ValorTransacao>150.00</ValorTransacao>" & "<ValorEmolumento>34.10</ValorEmolumento>" & "<ValorFRJ>5.12</ValorFRJ>" & "<ValorFRC>0.85</ValorFRC>" & "<Natureza>Intimacao</Natureza>" & "<Titulo>6687</Titulo>" & "<Livro>1015</Livro>" & "<FolhaOuFicha>24</FolhaOuFicha>" & "<Termo></Termo>" & "<Protocolo>638544</Protocolo>" & "<Apontamento></Apontamento>" & "<Certidao></Certidao>" & "<NumeroOrdem></NumeroOrdem>" & "<NumeroProcedimentos></NumeroProcedimentos>" & _
    "<SelosAto>" & "<SequencialAto>1</SequencialAto>" & "<CodigoSelo>100528</CodigoSelo>" & "<Tipo>101</Tipo>" & "<Serie>A</Serie>" & "<CodigoSeguranca>82500100000025306293010230</CodigoSeguranca>" & "</SelosAto>" & _
    "<PessoasAto>" & "<SequencialAto>1</SequencialAto>" & "<NumeroDocumento>12345678910</NumeroDocumento>" & "<TipoDocumento>1</TipoDocumento>" & "<TipoParticipacao>1002</TipoParticipacao>" & "<NomePessoa>QUALQUER NOME</NomePessoa>" & "</PessoasAto>" & "<AtoPraticadoFilho> </AtoPraticadoFilho>" & "</AtoPraticado>" & _
    "<Rodape>" & "<QuantidadeAtos>1</QuantidadeAtos>" & "<QuantidadeSelos>1</QuantidadeSelos>" & "<ValorTotalTransacao>150.00</ValorTotalTransacao>" & "<ValorTotalEmolumentos>34.10</ValorTotalEmolumentos>" & "<ValorTotalFRJ>5.12</ValorTotalFRJ>" & "<ValorTotalFRC>0.85</ValorTotalFRC>" & "</Rodape>" & "</PrestacaoContas>" & "</soap12:Body>" & "<soap12:Envelope>"


    txtOutput.Text = PostWebservice(strUrl, strXml)

End Sub


Private Function PostWebservice(ByVal AsmxUrl As String, ByVal XmlBody As String) As String
    Dim objDom As Object
    Dim objXmlHttp As Object
    Dim strRet As String
    Dim intPos1 As Integer
    Dim intPos2 As Integer
    
    On Error GoTo Err_PW
    
    ' Create objects to DOMDocument and XMLHTTP
    Set objDom = CreateObject("MSXML2.DOMDocument")
    Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")
    
    ' Load XML
    objDom.async = False
    objDom.loadXML XmlBody

    ' Open the webservice
    objXmlHttp.open "POST", AsmxUrl, False
    
    ' Create headings
    objXmlHttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
    'objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl
    
    ' Send XML command
    objXmlHttp.send objDom.xml

    ' Get all response text from webservice
    strRet = objXmlHttp.responseText
    
    ' Close object
    Set objXmlHttp = Nothing
    
    ' Extract result
    intPos1 = InStr(strRet, "Result>") + 7
    intPos2 = InStr(strRet, "</")
    If intPos1 > 7 And intPos2 > 0 Then
        strRet = Mid(strRet, intPos1, intPos2 - intPos1)
    End If
    
    ' Return result
    PostWebservice = strRet
    
Exit Function
Err_PW:
    PostWebservice = "Error: " & Err.Number & " - " & Err.Description

End Function



#488363 - 15/04/2019 13:37:30

BETOOLIVEIRA7
BELEM
Cadast. em:Março/2019


O mais recente erro:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>404 - File or directory not found.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
<div class="content-container"><fieldset>
  <h2>404 - File or directory not found.</h2>
  <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
</fieldset></div>
</div>
</body>
</html>



#488364 - 15/04/2019 14:22:14

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Experimente pegar essa string XML que está fazendo à mão e validar aqui

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#488370 - 15/04/2019 16:38:33

BETOOLIVEIRA7
BELEM
Cadast. em:Março/2019


Peguei o XML gerado pelo sistema e testei no site.
Resposta: Valid XML.



#488372 - 15/04/2019 17:01:25

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Agora, verifique a estrutura se corresponde ao modelo que você tem

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#488373 - 15/04/2019 17:24:43

BETOOLIVEIRA7
BELEM
Cadast. em:Março/2019


Verifiquei e está batendo e passando no validador.
Mandei o XML anexado para o pessoal do Webservice analisar e falaram que o arquivo está correto.
Será que é o método de envio?



#488374 - 15/04/2019 17:50:01

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Talvez

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário