Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tonare

Passar Arraylist (ou Dataset) para um Webservice usando VB.NET

Recommended Posts

Olá Pessoal,

Preciso da ajuda de vocês para o seguinte caso. Tenho uma aplicação Windows Forms VB.NET e esta se comunica com um Webservice ASP.NET.

 

Preciso fazer uma carga de dados através da leitura de arquivo TXT pela App e passar estes dados para o WS que fará o papel de gravar os dados no banco de dados SQL Server

 

Eu desenvolvi a estrutura de campos no WS assim:

 

Public Class Carga_PNs_Input
       Public vm_campos() As List(Of Carga_PNs_Input_Campos)
   End Class

   Public Class Carga_PNs_Output
       Public vm_return As New Carga_PNs_Output_Campos
   End Class

   Public Class Carga_PNs_Input_Campos
       Public vm_codigo As String
       Public vm_nome As String
       Public vm_cpfcnpj As String
       Public vm_fone1 As String
       Public vm_fone2 As String
   End Class

   Public Class Carga_PNs_Output_Campos
       Public vm_codigo As String
       Public vm_resultado As Integer
   End Class

   <SoapHeader("Credencial")> _
   <WebMethod(Description:="")> _
   Public Function Carga_PNs(vm_dados As Carga_PNs_Input) As Carga_PNs_Output

<Código para processamento não desenvolvido pois ainda não consegui receber os dados>

   End Function

 

Na prática, a App faz a leitura do TXT e deve armazenando na estrutura usada pelo WS até o fim dos registros. Após isso, o WS irá ler linha a linha do que foi passado e inserir no banco de dados.

 

Porém, não consegui de forma alguma montar esta estrutura para usar na App.

 

Vocês podem por favor ajudar com exemplos?

 

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como esta seu código que consome o webservice? O que ocorreu?

 

Abraços...

 

Olá amigo,

Segue abaixo

 

' Instancia objetos para inserir os registros no DB
               Dim obj_ws As New SR_PSE_WS.PSE_WSSoapClient
               Dim obj_dados As New SR_PSE_WS.Carga_PNs_Input
               Dim vm_dados As New List(Of SR_PSE_WS.Carga_PNs_Input_Campos)()
               Dim vm_dados_aux As New SR_PSE_WS.Carga_PNs_Input_Campos()

               'Percorre o arquivo linha a linha
               While Not vm_linha.EndOfStream
                   'Splita linha
                   strLin = vm_linha.ReadLine.Trim().Split(";")

                   'Preenche mensagem de status
                   SLA_STATUS.Text = "Importando registro " & PBA_Status.Value & " - " & _
                                     "Instalação: " & strLin(0).ToString
                   If PBA_Status.Value Mod 100 = 0 Then System.Windows.Forms.Application.DoEvents()

                   'Adiciona registro
                   vm_dados_aux = New SR_PSE_WS.Carga_PNs_SAP_Input_Campos
                   vm_dados_aux.vm_codigo = strLin(0).ToString
                   vm_dados_aux.vm_nome = strLin(1).ToString
                   vm_dados_aux.vm_cpfcnpj = strLin(2).ToString
                   vm_dados_aux.vm_fone1 = strLin(3).ToString
                   vm_dados_aux.vm_fone2 = strLin(4).ToString

                   obj_dados.vm_dados.Add(vm_dados_aux)  <<<==== Aqui já está o problema (Explicação abaixo)

                   'A cada pacote de X, envia ao servidor para gravar no banco.
                   If PBA_Status.Value Mod 1000 = 0 Then
                       Dim obj_return = obj_ws.Carga_PNs_SAP(obj_ws_token, obj_dados)
                   End If
               End While

 

Quando eu uso através da instância de WS, não é reconhecido como um Array o obj_dados.vm_dados

Se eu uso a classe diretamente dentro do WS, o mesmo código funciona perfeitamente, pois reconhece a variável como um arraylist.

 

Muito obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal quando trabalha com webservice, principalmente porque você não sabe qual a aplicação está consumindo o WS, é trabalhar com XML.

Sendo assim, faça com que o seu app gere um xml do txt e envie esse xml para o ws. Depois o ws interpreta o xml e faz o que quiser com os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.