PASSAR UM ARRAY PARA UM WEBSERVICE
Olá galera!
Tenho um webservice e uma aplicação SamartDevice que consome o mesmo.
Em um determinado Metodo do Webservice eu passo como parametro um array com valores (n,2) , mas não consigo passar o arrray para o serviço pela aplicação, me retorna uma mensagem como se estivesse acessando um index fora do limite do arry mas realizei um teste e esta ok.
Li que teria que serializar o array para enviar via xml.Como posso fazer isso?
Tenho um webservice e uma aplicação SamartDevice que consome o mesmo.
Em um determinado Metodo do Webservice eu passo como parametro um array com valores (n,2) , mas não consigo passar o arrray para o serviço pela aplicação, me retorna uma mensagem como se estivesse acessando um index fora do limite do arry mas realizei um teste e esta ok.
Li que teria que serializar o array para enviar via xml.Como posso fazer isso?
o DETERMINADO MéTODO do Web Service tem que ser declarado como do tipo ARRAY.
Se vc vai enviar para um web service um objeto tipo DATASET , o método que irá receber tal dataset no web service tem que ser do tipo DATA SET.
E ASSIM POR DIANTE.
Exemplo :
No Web Service vc tem um MéTODO que irá retornar uma String.
Então no smartDeivce vc terá que instanciar um string para receber tal método.
No web service vc tem um MéTODO que irá retornar um DataSet
Então no smartDevice vc terá que instanciar um DataSet para receber tal método.
BASICAMENTE é ISSO.!!!!!
Se vc vai enviar para um web service um objeto tipo DATASET , o método que irá receber tal dataset no web service tem que ser do tipo DATA SET.
E ASSIM POR DIANTE.
Exemplo :
No Web Service vc tem um MéTODO que irá retornar uma String.
Então no smartDeivce vc terá que instanciar um string para receber tal método.
No web service vc tem um MéTODO que irá retornar um DataSet
Então no smartDevice vc terá que instanciar um DataSet para receber tal método.
<WebMethod()> _
Public Function BuscaAtendente() As ArrayList
BuscaAtendente = Nothing
Try
Dim sAtendente As New ArrayList
Dim executa As New clsExecute
Dim sSql As String = [Ô]Select ID,Nome As Nome from Atendentes;[Ô]
Dim ds As New DataSet
Dim i As Integer
ds = executa.sDataSet(sSql)
If ds.Tables(0).Rows.Count > 0 Then
For i = 0 To ds.Tables(0).Rows.Count - 1
Dim ID As String = ds.Tables(0).Rows.Item(i).Item(0).ToString
Dim NOME As String = ds.Tables(0).Rows.Item(i).Item(1).ToString
sAtendente.Add(ID & [Ô] - [Ô] & NOME)
Next
End If
Return sAtendente
Catch ex As Exception
Dim err As ArrayList
err = New ArrayList
err.Add(ex.Message)
Return err
End Try
End Function
BASICAMENTE é ISSO.!!!!!
Foxman só você me salva msm. Mas não passou mesmo assinando o metodo.
Do lado do Webservice onde recebo um Object que é um array e retorno uma String.
<WebMethod(Description:=[Ô]Finalizar comanda[Ô])> _
Public Function FinalizarComanda(ByVal codMesa As String, ByVal codGarcom As String, ByVal mItens As Object) As Object
[ô]Dim ultimoCod As String
[ô]Dim mItens(UBound(mItens1), 2) As Object
Dim nComanda As Long
Dim vComissao As Double
Dim vValUnit As Double
retorno = [Ô]quantas linhas[Ô] & UBound(mItens)
Return (retorno)
Exit Function
Do lado do Webservice onde chamo a função tenho um object que esta sendo preenchido corretamente,
Private Sub cmdFinalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFinalizar.Click
Dim n As Integer
Dim mItens(0, 0) As Object
n = lstvPedidos.Items.Count() - 1
ReDim mItens(n, 1)
[ô]retorno = mItens.Rank()
For Each lvi As ListViewItem In lstvPedidos.Items
mItens(lvi.Index, 0) = lvi.Text
mItens(lvi.Index, 1) = lvi.SubItems(2).Text
Next
retorno = Ws.FinalizarComanda(txtMesa.Text, txtCodGarcom.Text, mItens)
MessageBox.Show(retorno, [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button3)
End Sub
Hum ai sempre me retorna o ERRO do lado do Pocket que estou acessando um campo fora do indece do array (IndexOutOfRangeException).
Obs: Fiz um metodo de teste no webservice e ele funciona passando o array, mas creio que isso é esperado pois estão rodando do mesmo lado.
Sei que deve ser um erro infantil mas como sou novo em vb.net e aplicações Pocket pc peço sua ajuda.
Do lado do Webservice onde recebo um Object que é um array e retorno uma String.
<WebMethod(Description:=[Ô]Finalizar comanda[Ô])> _
Public Function FinalizarComanda(ByVal codMesa As String, ByVal codGarcom As String, ByVal mItens As Object) As Object
[ô]Dim ultimoCod As String
[ô]Dim mItens(UBound(mItens1), 2) As Object
Dim nComanda As Long
Dim vComissao As Double
Dim vValUnit As Double
retorno = [Ô]quantas linhas[Ô] & UBound(mItens)
Return (retorno)
Exit Function
Do lado do Webservice onde chamo a função tenho um object que esta sendo preenchido corretamente,
Private Sub cmdFinalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFinalizar.Click
Dim n As Integer
Dim mItens(0, 0) As Object
n = lstvPedidos.Items.Count() - 1
ReDim mItens(n, 1)
[ô]retorno = mItens.Rank()
For Each lvi As ListViewItem In lstvPedidos.Items
mItens(lvi.Index, 0) = lvi.Text
mItens(lvi.Index, 1) = lvi.SubItems(2).Text
Next
retorno = Ws.FinalizarComanda(txtMesa.Text, txtCodGarcom.Text, mItens)
MessageBox.Show(retorno, [Ô]Atenção[Ô], MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button3)
End Sub
Hum ai sempre me retorna o ERRO do lado do Pocket que estou acessando um campo fora do indece do array (IndexOutOfRangeException).
Obs: Fiz um metodo de teste no webservice e ele funciona passando o array, mas creio que isso é esperado pois estão rodando do mesmo lado.
Sei que deve ser um erro infantil mas como sou novo em vb.net e aplicações Pocket pc peço sua ajuda.
Kennedy, oq vc quer retornar necessáriamente para o pocket ???
Bem, vamos lá...
Primeiro, evite passar grandes quantidades de dados para o WS.
Pelo que vi vc esta passando dados de um listview para o ws, quando vc poderia passar uma solicitação de fechamento de mesa.
Ai no WS vc faz a finalização e retorna para o smart apenas o resultado.
Me add no msn que vou te dar um help....ae.
Ta meio corrido agora ......mas posso te ajudar assim q desafogar aqui.
Bem, vamos lá...
Primeiro, evite passar grandes quantidades de dados para o WS.
Pelo que vi vc esta passando dados de um listview para o ws, quando vc poderia passar uma solicitação de fechamento de mesa.
Ai no WS vc faz a finalização e retorna para o smart apenas o resultado.
Me add no msn que vou te dar um help....ae.
Ta meio corrido agora ......mas posso te ajudar assim q desafogar aqui.
Vlw msm, to garrando so nisso msm, na verdade o WS vai retornar uma string msm o que eu não to conseguindo é passar o Array que monto com os dados do list que esta no Pocket.
o WS recebe essa array processa e finaliza o pedido.
Vlw add vc no msn.
o WS recebe essa array processa e finaliza o pedido.
Vlw add vc no msn.
Tópico encerrado , respostas não são mais permitidas