estou com uma grande dificuldade em como fazer um web service via Axis retornar um Array de String, ou um Vector, alguma coisa do gênero.
Um Web Service retornando um int ou String, é simples de fazer. Para retornar objetos, arrays, precisa serializar.
O que estou querendo fazer é um cliente J2ME consumir um Web Service em Axis.
No J2ME estou usando os pacotes KSoap e KXML para manipulação de Web Services
Procurei bastante na internet, mas é dificil de achar algo que ajude.
vou dar exemplos simples do que quero fazer:
função (?) do web service que retorna um Vector de Strings:
...
public Vector exibirProdutos()
{
Vector result = null;
result.addElement("Mouse");
result.addElement("Teclado");
result.addElement("Monitor");
return result;
}
...
o retorno XML ao invocar o web service está praticamente correto, só nao consegui colar aqui
Cliente J2ME:
...
public void capturaProdutos() throws Exception {
try
{
String url = "http://localhost:8080/axis/Produtos.jws";
SoapObject client = new SoapObject(url,"exibirProdutos");
ClassMap classMap = new ClassMap(true);
classMap.addMapping(url,"Vector",new Vector().getClass());
HttpTransport ht = new HttpTransport(url,"exibirCategorias");
ht.setClassMap(classMap);
ht.debug = true;
Vector s = (Vector) ht.call(client);
for (int i = 0; i < s.size(); i++)
{
System.out.println((String)s.elementAt(i));
}
}
catch (Exception ex) {
System.out.println(ex);
}
}
...
pelo o que entendi, o ClassMap pode mapear a classe para que o Web Service entenda que quero retornar um Vector. Mas não sei se é dessa forma que faz, ja tentei fazer algumas modificações no código, nao achei exemplos claro na internet.
o erro acontece no momento de fazer o "call", no seguinte trecho:
Vector s = (Vector) ht.call(client);
Mensagem de erro:
"java.lang.ClassCastException"!
testei as seguintes formas de mapear:
classMap.addMapping(url,"Vector",new Vector().getClass());
classMap.addMapping(url,"result",new Vector().getClass());
sem sucesso!
é um trabalho de tcc, agradeço qualquer dica e ajuda
obrigado