PASSAR UM ARRAY PARA UM WEBSERVICE

KENNEDY 20/08/2010 15:53:38
#350814
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?
FOXMAN 21/08/2010 16:17:25
#350880
Resposta escolhida
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.

  <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.!!!!!

KENNEDY 23/08/2010 10:58:31
#350971
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.
FOXMAN 23/08/2010 11:33:22
#350981
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.


KENNEDY 23/08/2010 11:50:33
#350985
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.
Tópico encerrado , respostas não são mais permitidas