Olás,
Será que alguém teria algum exemplo de como enviar uma lista de objetos como parâmetro para uma operação de um WS feito em .net utilizando a API Ksoap2?
Consultei vários fóruns e tutoriais e ainda não consegui… Estou começando a ficar com o pé atrás, pois quase todo mundo tem problemas para enviar objetos e listas de objetos como parâmetros (com essa api)
Obrigado 
[quote=pedrohms] A little bit of the google:
http://devcentral.f5.com/Tutorials/TechTips/tabid/63/articleType/ArticleView/articleId/102/The-Minimum-Steps-to-utilize-KSOAP2.aspx[/quote]
Olá Pedro! Dei uma olhada neste artigo, mas ele não responde minha dúvida. Mas de qualquer forma, vlw.
Responde sim. Acho q sua duvida seria como serializar o objeto para envia-lo via web service. certo ?
Não. Pelos testes que fiz e pelo que vi, p/ enviar uma LISTA de objetos (que é o que eu preciso) não basta que estes objetos estejam serializados, sacou?
Pela experiencia que tenho com ksoap2 nao tive problemas em enviar objetos serializados vi WS. Se você poder enviar a mensagem de erro ajudaria.
Tenta com alguma implementaçao do JSON, como o Jackson ou GSON.
A ideia é simples: serializar um objeto, convertendo para String, para transportá-lo mais facilmente e do outro lado é só desserializá-lo, convertendo novamente no objeto original.
Exemplo com Jackson:
[code]ObjectMapper mapper = new ObjectMapper();
Pessoa pessoa = new Pessoa();
// Serializando
String s = mapper.writeValueAsString(pessoa);
// Transporta a String para o WS
// Desserializando
Pessoa pessoa = mapper.readValue(s, Pessoa.class);[/code]
Já passei um array de objetos (Pessoa[]) e funcionou perfeitamente. Para implementar com uma List o processo é praticamente o mesmo.
[quote=adrielcafe]Tenta com alguma implementaçao do JSON, como o Jackson ou GSON.
A ideia é simples: serializar um objeto, convertendo para String, para transportá-lo mais facilmente e do outro lado é só desserializá-lo, convertendo novamente no objeto original.
Exemplo com Jackson:
[code]ObjectMapper mapper = new ObjectMapper();
Pessoa pessoa = new Pessoa();
// Serializando
String s = mapper.writeValueAsString(pessoa);
// Transporta a String para o WS
// Desserializando
Pessoa pessoa = mapper.readValue(s, Pessoa.class);[/code]
Já passei um array de objetos (Pessoa[]) e funcionou perfeitamente. Para implementar com uma List o processo é praticamente o mesmo.[/quote]
Olá Adriel,
Usando uma implementação do JSON seria necessário alguma mudança no WebService?
[quote=maranata]
Usando uma implementação do JSON seria necessário alguma mudança no WebService?[/quote]
Você apenas precisa adicionar o Jar (no cliente e no WS) da implementação JSON. Não precisa alterar nada no WS, você apenas vai tá passando uma String de uma lado para o outro, serializando e desserializando. É tudo muito transparente.
[quote=adrielcafe][quote=maranata]
Usando uma implementação do JSON seria necessário alguma mudança no WebService?[/quote]
Você apenas precisa adicionar o Jar (no cliente e no WS) da implementação JSON. Não precisa alterar nada no WS, você apenas vai tá passando uma String de uma lado para o outro, serializando e desserializando. É tudo muito transparente.[/quote]
O problema é que o Web Service é feito em .net 
Teria alguma outra sugestão?
Transportar strings não seria o problema certo? O problema seria qual implementação JSON usar, já que estamos falando e Java e .Net. No site do JSON, lá embaixo, tem uma lista de implementações pra C#, Visual Basic e diversas outras linguagens.
No Android você usaria uma API e no WS outra API que possuem o mesmo padrão de serialização: JSON. Dessa forma dá certo 
Acabei de fazer um teste transportando uma List<Categoria>, uma lista com POJOs, usando o Jackson e funcionou perfeito 
Fiz assim:
[code]// Serializando
ObjectMapper mapper = new ObjectMapper();
Categoria c1 = new Categoria();
Categoria c2 = new Categoria();
Categoria c3 = new Categoria();
// Populando os POJOs
List<Categoria> lista = new ArrayList<Categoria>();
lista.add(c1);
lista.add(c2);
lista.add(c3);
String s = mapper.writeValueAsString(lista);
// Desserializando
List<Categoria> cats = mapper.readValue(s, new TypeReference<List><Categoria>>() { });[/code]
A chave para desserializar com sucesso a List<Categoria> foi usar [color=blue]new TypeReference< List<Categoria> >() {}[/color] .