Neste tutorial pretendo mostrar de forma simples como criar um Web Service em Java utilizando o NetBeans e uma aplicacao cliente para consumir o servico no Android. O Web Service vai implementar uma operacao que devera retornar um array de objetos. Na aplicacao Android esse array sera recebido e utilizado para preencher uma lista de itens (ListView). Ferramentas utilizadas: NetBeans 7.1 + Tomcat 7 (servidor) Eclipse + ADT - Android Developer Tools v21.0.1-543035 (cliente) Criando o Web ServiceNao vou entrar em detalhes sobre a criacao da aplicacao no NetBeans porque ja existe um bom tutorial disponivel aqui. Apos criar o projeto, crie tambem uma classe para o objeto que sera retornado. Para fins de exemplo vou utilizar a seguinte classe:public class Fornecedor { int codigo; String razaoSocial; String cpfCnpj; public Fornecedor() { } public Fornecedor(int codigo, String razaoSocial, String cpfCnpj) { this.codigo = codigo; this.razaoSocial = razaoSocial; this.cpfCnpj = cpfCnpj; } public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getCpfCnpj() { return cpfCnpj; } public void setCpfCnpj(String cpfCnpj) { this.cpfCnpj = cpfCnpj; } public String getRazaoSocial() { return razaoSocial; } public void setRazaoSocial(String razaoSocial) { this.razaoSocial = razaoSocial; } @Override public String toString() { return getCodigo() + ". " + getRazaoSocial(); }}E importante que sua classe tenha um construtor padrao, sem argumentos. Pode parecer inutil mas o Tomcat nao vai implantar o projeto sem ele. O metodo toString devera ser sobrescrito na classe, mas isto sera util apenas na aplicacao cliente ao preencher a lista, pois sera utilizada a mesma classe. Seguindo o tutorial que foi sugerido, voce deve criar uma operacao que nao recebera parametros e que a saida sera do tipo List<Fornecedor>. Para o exemplo vou chamar esta operacao de getFornecedores. O codigo devera ser parecido com este: @WebService(serviceName = "GetFornecedores")public class GetFornecedores { @WebMethod(operationName = "getFornecedores") public List<Fornecedor> getFornecedores() { List<Fornecedor> listFornecedores = new ArrayList<Fornecedor>(); listFornecedores.add(new Fornecedor(1, "Fornecedor 1", "0123456789")); listFornecedores.add(new Fornecedor(2, "Fornecedor 2", "0123456789")); listFornecedores.add(new Fornecedor(3, "Fornecedor 3", "0123456789")); return listFornecedores; } }Apos implantar e executar o projeto, o arquivo wsdl pode ser acessado atraves do browser, de acordo com suas configuracoes:http://localhost:8080/TestWSApp/GetFornecedores?wsdlCom o projeto rodando vamos para a segunda parte.Criando o cliente Android Crie um projeto no Eclipse com uma Activity principal e adicione a lib ksoap2 no Build Path. Copie a classe Fornecedor citada anteriormente e cole no pacote do projeto. Entao crie uma classe chamada ConexaoWS com o seguinte codigo:import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;public class ConexaoWS { private static final String NAMESPACE = "http://testws.me.org/"; private static final String METHOD_NAME = "getFornecedores"; private static final String SOAP_ACTION = "http://testws.me.org/getFornecedores"; private static final String URL = "http://10.1.0.116:8080/TestWSApp/GetFornecedores?wsdl"; public Fornecedor[] getFornecedores() throws Exception { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE ht = new HttpTransportSE(URL); ht.call(SOAP_ACTION, envelope); SoapObject response = (SoapObject) envelope.bodyIn; Fornecedor[] fornecedores = new Fornecedor[response.getPropertyCount()]; for (int c = 0; c < fornecedores.length; c++) { SoapObject soapObject = (SoapObject) response.getProperty(c); Fornecedor f = new Fornecedor(); f.codigo = Integer.parseInt(soapObject.getProperty(0).toString()); f.cpfCnpj = soapObject.getProperty(1).toString(); f.razaoSocial = soapObject.getProperty(2).toString(); fornecedores[c] = f; }