Ver mensagens sem resposta | Ver tópicos ativos Hoje é 08 Dez 2019, 22:48



Responder Tópico  [ 140 Mensagens ]  Ir para a página 1, 2, 3  Próximo
 [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Factory] 
Autor Mensagem
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Factory]
Pessoal,

Conforme prometido, vamos ao nosso terceiro e último artigo da série Web Service. Agora vamos partir para o acesso ao banco. Como o pessoal aqui já deve conhecer SQL de longa data, meu foco não será esse, e sim os padrões de projetos fortemente usados em Java e os códigos. Em relação aos códigos, seguirei com o básico, sempre vai existir uma forma melhor e mais eficiente de se fazer, mas aí é com vocês.

Já adianto que não sou um profissional extremamente experiente em padrões de projeto (Design Patterns), mas tentarei passar o que eu tenho de conhecimento para vocês. Logo, se eu falar alguma besteira, por favor, não hesitem em me corrigir. Vamos compartilhar as informações. /ww

Como persistir dados em um banco de dados PostgreSQL, usando Java e os padrões de projetos Factory, DAO e Business!

Neste artigo aprenderemos como acessar um Banco de Dados Postgres com Java, assim teremos onde persistir os dados do nosso Web Service. De quebra aprenderemos alguns padrões de projetos usados no mercado.

Premissas:

* Ter o Postgres, na Version 9.1.2, instalado e configurado (Fiz o download do pacote, que contém o Postgres e o pgAdmin);

* Ter o projeto do artigo Web Service com JSON, ou fazer suas devidas adaptações, já que esse projeto está tendo como base o que foi desenvolvido no primeiro artigo.

Recursos necessários:

* Driver JDBC para o PostgreSQL. Como estou usando o JDK 1.6 (requer o JDBC4) e o PostgresSQL 9.1(requer a versão 9.1-901), tive que baixar o “postgresql-9.1-901.jdbc4.jar”. Caso use uma configuração Java/Postgres diferente da minha, ache o seu driver no site. O processo é o mesmo que foi feito para as bibliotecas do outro projeto, basta colocar esse .jar dentro do diretório “workspace/WebServiceREST/WebContent/WEB-INF/lib”.

Primeiro vamos conhecer melhor o que são esses padrões de projetos chamados: DAO, Business e Factory.

DAO, acrônimo de Data Access Object, é um padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados. Numa aplicação que utilize a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como obter as conexões, mapear objetos Java para tipos de dados SQL ou executar comandos SQL, devem ser feitas por classes de DAO. (by Wikipedia)

Nenhuma validação ou processamento de dados será feita no DAO, ele apenas apenas recebe/devolve objetos(entidade ou bean) e executa “query” no banco, essa função é da Business, que falaremos a seguir.

Business ou Camada de Serviço, como eu aprendi na faculdade, nada mais é que uma camada responsável por processar os dados que vem do DAO antes de chegar na camada “view”. Por exemplo, se você precisa validar alguns dados antes de enviar ao DAO, é na camada “business” que será feita essa validação. Da mesma forma no outro sentido, se você precisa organizar os dados antes de enviar para a “view”, essa tarefa é dessa camada. Um exemplo prático é dizer que o seu método “login()”, que serve para verificar se o usuário está cadastrado e/ou autenticá-lo, ficará na camada de serviço do objeto usuário, que usará o DAO do usuário como ferramenta para chegar no banco. A “view” pede para a camada Business, se utilizando do método “login()”, validar o usuário, que por sua vez, pedirá para a camada DAO buscar o usuário no banco. No final, a “Business” devolverá para a “view” o usuário validado ou não, para tratar esses dados da maneira que lhe cabe, seja para iniciar a sessão, liberando acesso ou qualquer outra tomada de decisão de sua responsabilidade.

Factory é uma fábrica, que pode ser de qualquer tipo de objeto, ela é bem genérica. No nosso caso, usaremos a Connection Factory, que é uma fábrica especializada em conexões com um Banco de Dados. Ela ficará responsável por prover, ou criar, essa conexão para o nosso DAO. Além disso, ela ficará responsável, também, por fechar a conexão, que ela criou, e outros recursos que utilizaremos no DAO. Faremos ela como uma super classe, ou seja, ela será uma classe abstrata, não sendo possível instanciá-la. Todos os DAO’s herdarão dela, se tornando filhos da fábrica de conexões. Pela natureza da herança, todos os DAO’s saberão criar e fechar as conexões.

Recomendações de desenvolvimento:

O ideal é sempre começar o desenvolvimento pelo UML, mas não vou entrar nesse mérito. Com o UML pronto, eu costumo começar a desenvolver de trás para frente, ou seja, começo desenhando o banco, depois faço o model (entidades ou bean), seguindo pelo DAO, Business e por último a view. No Android é a mesma coisa, a Activity é a última coisa que faço, já que o layout é outra pessoa da minha equipe quem faz, tocamos em paralelo.

O pacote contendo model, DAO e Business pode ser separado da view, já que você pode desenvolver uma aplicação Web ou Desktop usando esse projeto como uma biblioteca. Com isso, quando alguma coisa é mudada em uma classe, ambas as suas interfaces com o usuário (web ou desktop) já estarão contempladas com a modificação e de quebra você não terá problema com operações divergentes em seus diferentes projetos. Sem falar da gigantesca economia de código.

No Android é um pouco diferente, ainda mais quando falamos de consumir Web Service. Para exemplificar pra vocês, no meu projeto, tenho uma biblioteca exatamente igual no meu projeto Android e no meu projeto Web Service, que é o .jar de todo o meu model. Criei um projeto Java comum, coloquei todas as minhas classes model, que são comuns aos dois projetos, lá dentro, já que farei comunicação baseada nesses objetos que os dois lados devem conhecer. Fiz o devido importe, desse .jar gerado, para os dois projetos e pronto. Não preciso mais me preocupar se as classes ficaram diferentes e se vou ter problema de comunicação com o meu WS. Sempre que faço alguma alteração no meu model, torno a importar em meus dois projetos. Isso é bom quando você tem uma equipe de desenvolvimento, que é o meu caso. Agora estou desenvolvendo o app Android e um amigo o WS, mas as vezes trocamos e os dois precisam alterar o model. Então, não me preocupo, quando começo o trabalho, importo o .jar do projeto model para dentro do meu projeto e começo, sem esquentar a minha cabeça.

Chega de “mimimi” e vamos aos códigos!!!

Começando pelo “script” básico de criação do Banco para o nosso exemplo.


CREATE DATABASE droidws
  WITH OWNER = postgres
    ENCODING = 'UTF8'
    TABLESPACE = pg_default
    LC_COLLATE = 'pt_BR.utf8'
    LC_CTYPE = 'pt_BR.utf8'
    CONNECTION LIMIT = -1;
CREATE TABLE cliente
(
  id serial NOT NULL,
  nome text,
  cpf text NOT NULL,
  endereco text,
  CONSTRAINT id PRIMARY KEY (id ),
  CONSTRAINT cpf UNIQUE (cpf )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE cliente
  OWNER TO postgres;
 


Agora vamos ao nosso Connection Factory.


package br.com.droid.factory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public abstract class ConnectionFactory {
   
    // database URL
    private static final String DATABASE_URL = "jdbc:postgresql://localhost/droidws";
    private static final String USERNAME = "postgres";
    private static final String PASSWORD = "postgres";

    public Connection getConnection() {
     Connection con = null;
     try {
         Class.forName("org.postgresql.Driver");
         con = DriverManager.getConnection(DATABASE_URL, USERNAME,
                 PASSWORD);
     } catch (Exception e) {
         System.out.println("Erro ao criar conexao.");
         e.printStackTrace();
     }
     return con;
    }

    public void closeConnection(Connection conn, Statement stmt, ResultSet rs) {
     try {
         close(conn, stmt, rs);
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }

    public void closeConnection(Connection conn, Statement stmt) {
     try {
         close(conn, stmt, null);
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }

    public void closeConnection(Connection conn) {
     try {
         close(conn, null, null);
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }

    private void close(Connection conn, Statement stmt, ResultSet rs) {

     try {
         if (rs != null) {
             rs.close();
         }
         if (stmt != null) {
             stmt.close();
         }
         if (conn != null) {
             conn.close();
         }
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }
}
 


Feito isso, criaremos o nosso DAO. Como falei anteriormente, ele apenas faz as operações básicas.


package br.com.droid.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import br.com.droid.factory.ConnectionFactory;
import br.com.droid.model.Cliente;

public class ClienteDAO extends ConnectionFactory {

    public int verificaCadastrado(String cpf) {

     int id = 0;
     Connection conn = null;
     ResultSet resultSet = null;
     PreparedStatement stmt = null;
     conn = getConnection();
     try {
         stmt = conn
                 .prepareStatement("SELECT ID FROM CLIENTE WHERE CPF = ?");
         stmt.setString(1, cpf);
         resultSet = stmt.executeQuery();
         if (resultSet.next()) {
             id = resultSet.getInt("id");
         }
     } catch (SQLException e) {
         e.printStackTrace();
     } finally {
         closeConnection(conn, stmt, resultSet);
     }
     return id;
    }

    public int inserir(Cliente cliente) {

     Connection conn = null;
     conn = getConnection();
     int sucesso = 0;
     int prodsCadastrados = verificaCadastrado(cliente.getCpf());

     if (prodsCadastrados == 0) {
         PreparedStatement stmt = null;
         try {
             stmt = conn.prepareStatement("INSERT INTO "
                     + "CLIENTE (NOME, CPF, ENDERECO) VALUES(?,?,?)");

             stmt.setString(1, cliente.getNome());
             stmt.setString(2, cliente.getCpf());
             stmt.setString(3, cliente.getEndereco());
             sucesso = stmt.executeUpdate();

             if (sucesso > 0) {
                 System.out.println("CLIENTE INSERIDO!");
             }

         } catch (SQLException e) {
             e.printStackTrace();
             System.out.println("ERRO AO INSERIR CLIENTE!");
         } finally {
             closeConnection(conn, stmt);
         }
     } else {
         System.out.println("ERRO: CLIENTE JA CADASTRADO");
         closeConnection(conn);
     }
     return sucesso;
    }

    public int alterar(Cliente cliente) {

     Connection conn = null;
     conn = getConnection();
     PreparedStatement stmt = null;
     int sucesso = 0;
     try {
         stmt = conn
                 .prepareStatement("UPDATE CLIENTE SET NOME = ?, SET CPF = ?, SET ENDERECO = ? WHERE ID = ?");

         stmt.setString(1, cliente.getNome());
         stmt.setString(2, cliente.getCpf());
         stmt.setString(3, cliente.getEndereco());
         stmt.setInt(4, cliente.getId());
         sucesso = stmt.executeUpdate();
         
         if (sucesso > 0) {
             System.out.println("CLIENTE ALTERADO!");
         } else {
             System.out.println("CLIENTE NÃO EXISTE!");
         }
     } catch (SQLException e) {
         e.printStackTrace();
         System.out.println("ERRO AO ALTERAR CLIENTE!");
     } finally {
         closeConnection(conn, stmt);
     }
     return sucesso;
    }

    public int deletar(int id) {

     Connection conn = null;
     conn = getConnection();
     int excluidos = 0;
     PreparedStatement stmt = null;
     try {
         stmt = conn.prepareStatement("DELETE FROM CLIENTE WHERE ID = ?");
         stmt.setInt(1, id);
         excluidos = stmt.executeUpdate();
         
         if (excluidos > 0) {
             System.out.println("CLIENTE REMOVIDO!");
         } else {
             System.out.println("CLIENTE NÃO EXISTE!");
         }

     } catch (SQLException e) {
         e.printStackTrace();
         System.out.println("ERRO AO DELETAR CLIENTE!");
     } finally {
         closeConnection(conn, stmt);
     }
     return excluidos;
    }

    public Cliente buscar(int id) {

     Connection conn = null;
     ResultSet resultSet = null;
     PreparedStatement stmt = null;
     conn = getConnection();
     Cliente cliente = null;
     try {
         stmt = conn.prepareStatement("SELECT * FROM CLIENTE WHERE ID = ?");
         stmt.setInt(1, id);
         resultSet = stmt.executeQuery();
         while (resultSet.next()) {
             cliente = new Cliente();
             cliente.setId(resultSet.getInt("id"));
             cliente.setNome(resultSet.getString("nome"));
             cliente.setCpf(resultSet.getString("cpf"));
             cliente.setEndereco(resultSet.getString("endereco"));
         }
     } catch (SQLException e) {
         e.printStackTrace();
     } finally {
         closeConnection(conn, stmt, resultSet);
     }
     return cliente;
    }

    public ArrayList<Cliente> buscarTodos() {

     Connection conn = null;
     ResultSet resultSet = null;
     PreparedStatement stmt = null;
     conn = getConnection();
     ArrayList<Cliente> listaClientes = null;

     try {

         stmt = conn.prepareStatement("SELECT * FROM CLIENTE ORDER BY ID");
         resultSet = stmt.executeQuery();
         listaClientes = new ArrayList<Cliente>();

         while (resultSet.next()) {
             Cliente cliente = new Cliente();
             cliente.setId(resultSet.getInt("id"));
             cliente.setNome(resultSet.getString("nome"));
             cliente.setCpf(resultSet.getString("cpf"));
             cliente.setEndereco(resultSet.getString("endereco"));
             listaClientes.add(cliente);
         }

     } catch (SQLException e) {
         e.printStackTrace();
         listaClientes = null;
     } finally {
         closeConnection(conn, stmt, resultSet);
     }
     return listaClientes;
    }
}
 


Dica: Sempre use o ”PreparedStatement” para as operações com banco, pois ele funciona como uma proteção contra o famoso ”SQL Injection”.

Fazer SQL assim:

String sql = “select * from cliente where nome = ‘“+nome+”’ and senha = ‘“+senha+”’”


É furada!!! Não façam isso!!

E agora a nossa Business. Percebam que é ela quem vai tratar os erros e os processamentos nos objetos. Reparem que eu não criei um método para inserir uma lista de clientes no DAO, mas criei aqui, que vai iterar nessa lista de clientes e inserir um a um usando o método do DAO.


package br.com.droid.model;

import java.util.ArrayList;
import br.com.droid.dao.ClienteDAO;

public class ClienteBusiness {

    public ArrayList<Cliente> buscarTodos() {
     ClienteDAO clienteDAO = new ClienteDAO();
     return clienteDAO.buscarTodos();
    }
   
    public String inserir(Cliente cliente) {

     ClienteDAO clienteDAO = new ClienteDAO();
     if(clienteDAO.inserir(cliente) > 0){
         return "Cliente inserido no banco com sucesso!";
     } else {
         return "Falha ao inserir o cliente no banco!";
     }
    }
   
    public String deletar(int id) {
     ClienteDAO clienteDAO = new ClienteDAO();
     if(clienteDAO.deletar(id) > 0){
         return "Cliente removido no banco com sucesso!";
     } else {
         return "Cliente não existe!";
     }
    }
   
    public Cliente buscar(int id) {
     ClienteDAO clienteDAO = new ClienteDAO();
     return clienteDAO.buscar(id);
    }
   
    public String inserirLista(ArrayList<Cliente> listaClientes) {
     ClienteDAO clienteDAO = new ClienteDAO();
     String retorno = "";
     for (int i = 0; i < listaClientes.size(); i++) {
         if(clienteDAO.inserir(listaClientes.get(i)) < 1){
             retorno += "Erro ao inserir o cliente de CPF: "+ listaClientes.get(i).getCpf() +"\n";
         }
     }
     if(retorno.length() == 0){
         retorno = "Lista de clientes inserida no banco com sucesso!";
     }
     return retorno;
    }
}
 


Feito isso, vamos as modificações na nossa camada Resource. O que fizemos agora foi parar de referenciar a antiga classe Banco, que era uma classe auxiliar para entendermos o funcionamento do WS, e passamos a chamar os métodos da nossa camada Business.


package br.com.droid.resources;

import java.util.ArrayList;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import br.com.droid.exception.NoContentException;
import br.com.droid.model.Cliente;
import br.com.droid.model.ClienteBusiness;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;

@Path("/cliente")
public class ClienteResource {
   
    @GET
    @Path("/buscarTodos")
    @Produces("application/json")
    public ArrayList<Cliente> selTodos(){
     return new ClienteBusiness().buscarTodos();
    }

    @GET
    @Path("/buscarTodosGSON")
    @Produces("application/json")
    public String selTodosGSON(){
     return new Gson().toJson(new ClienteBusiness().buscarTodos());
    }
   
    @GET
    @Path("/{id}")
    @Produces("application/json")
    public Cliente getCliente(@PathParam("id") int id){
     Cliente cliente = new ClienteBusiness().buscar(id);
    
     if(cliente == null)
         throw new NoContentException("Cliente não encontrado!");
    
     return cliente;
    }
   
    @GET
    @Path("/delete/{id}")
    @Produces("application/json")
    public String deleteCliente(@PathParam("id") int id){
     return new ClienteBusiness().deletar(id);
    }
   
    @POST
    @Path("/inserir")
    @Produces("application/json")
    @Consumes("application/json")
    public String inserirCliente(Cliente cliente) {
     return new ClienteBusiness().inserir(cliente);
    }
   
    @POST
    @Path("/inserirLista")
    @Produces("application/json")
    @Consumes("application/json")
    public String inserirLista(String listaClientesJson) {
    
     Gson gson = new Gson();
     ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
     JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(listaClientesJson).getAsJsonArray();
    
        for (int i = 0; i < array.size(); i++) {
         listaClientes.add(gson.fromJson(array.get(i), Cliente.class));
     }
    
     return new ClienteBusiness().inserirLista(listaClientes);

    }
}
 


Para testar esse projeto, usei o projeto que foi criado no nosso segundo artigo (Web Service RESTful 2 [Consumir+Android]), sem mudar nada.

Com isso fechamos o nosso ciclo que abrange desde o Banco de Dados até o Android, resolvendo o grande problema que é “como colocar e coletar dados em um banco fora do android?”.

Agora é só brincar!! /uu

Abraços!!

PS.: Como fiz esse tutorial hoje e não tive tempo de reler algumas vezes, se tiver algum erro, por favor, me avise para que a correção seja feita.
PS2.: Como falei anteriormente, aqui vc consegue o básico, sempre vai existir uma forma melhor e mais eficiente de se fazer, mas agora é com vocês corram atrás. /ww


Confiram os artigos anteriores:

[Artigo] Web Service RESTful [+Java+JSON+Code]
[Artigo] Web Service RESTful 2 [+Consumir+Android]


Você não tem permissões suficientes para ver os arquivos anexados nesta mensagem.

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


16 Fev 2012, 21:22
Perfil WWW
What is Android?
What is Android?

Data de registro: 22 Ago 2011, 00:02
Mensagens: 6
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Showwwwwwwwwww cara

Muito obrigado!!


18 Fev 2012, 11:32
Perfil
What is Android?
What is Android?

Data de registro: 22 Ago 2011, 00:02
Mensagens: 6
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Estou com um problema vê se pode me ajudar por favor.

No android eu fiz a seuinte função, debuguei e esta certinho os dados.

    public String validarLogin(UserVO i_user) throws Exception {
       
        Gson gson = new Gson();
        String userGson = gson.toJson(i_user);
       
        String[] resposta = new WebService().post(URL_WS + "validarLogin", userGson);
       
        if (resposta[0].equals("200")) {
            return resposta[1];
        } else {
            throw new Exception(resposta[1]);
        }
    }
 


No webservice


    @POST
    @Path("/validarLogin")
    @Produces("application/json")
   public String validarLogin(UserVO user) throws IOException,Exception {
        Statement stm = null;
        ResultSet rst = null;
        StringBuffer sql = null;
        boolean isValido = false;

        abrirConexao();
       
        stm = Conexao.createStatement();
       
        sql = new StringBuffer();
        sql.append("SELECT * FROM USUARIO WHERE id = " + user.getIdUsuario() + " AND senha = md5('" + user.getSenha() + "')");
       
        rst = stm.executeQuery(sql.toString());
       
        System.out.println(sql.toString());
       
        if(rst.next()) {
            isValido = true;
        }
       
        stm.close();
        Conexao.close();
       
        if(isValido) {     
            return "validado com sucesso!";
        } else {
            return "inválido!";
        }
    }
   
 


Clase userVo do webService

@XmlRootElement
public class UserVO {
   
    private int _id;
    private String usuario;
    private String senha;

//getters
//setters
 


Todos as string vem com valor mas o int vem zero porém no Android é enviado valor.

Aguardo sua ajuda!!

Valeu


20 Fev 2012, 01:12
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Dá um print no JSON do android e confere no logcat se o sei id está certo lá!

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


20 Fev 2012, 04:21
Perfil WWW
What is Android?
What is Android?

Data de registro: 22 Ago 2011, 00:02
Mensagens: 6
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
No android {"usuario":"G","senha":"1","id":40}
No webservice SELECT * FROM USUARIO WHERE id = 0 AND senha = md5('1')


20 Fev 2012, 23:09
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Verifica sua classe "UserVO" no android, vc está declarando o id assim:

private int id;


E no seu WS, assim:

private int _id;


Por isso está como zero, ele não está achando a variável "id" na sua classe, pois só existe a "_id".

Se não for isso, se as duas variáveis estiverem da mesma forma, pode ser o "_" que o Jersey não entende por ser um caracter especial. Como ele funciona lendo as suas classes, não recomendo usar esses caracteres especiais em nomes de métodos, atributos e classes.

Esse "_" é coisa de outras linguagens, no .net por exemplo, um vício de programação, no java não precisa disso, basta começar com letra minúscula. Vc não vai confundir uma variável com um método, eu te garanto, no Java as coisas são diferentes.

Outra coisa. Leia o tópico, que eu falo sobre isso:

sql.append("SELECT * FROM USUARIO WHERE id = " + user.getIdUsuario() + " AND senha = md5('" + user.getSenha() + "')");


Não recomendo que vc faça select's dessa forma, completamente vulnerável a "sql injection"!!

Eu mostrei uma forma bem melhor de fazer isso!!

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


20 Fev 2012, 23:38
Perfil WWW
What is Android?
What is Android?

Data de registro: 22 Ago 2011, 00:02
Mensagens: 6
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Resolvi da seguinte maneira.
As duas classes estavam apenas com id no nome não sei porque nao deu certo.

    @POST
    @Path("/validarLogin")
    @Consumes("application/json")  
   public String validarLogin(String i_user) throws IOException,Exception {
       
        Gson gson = new Gson();
       
        UserVO user = gson.fromJson(i_user, UserVO.class);
 


Esse é apenas um teste, vou fazer o select como explicado no tutorial.

Parabéns pela dedicação e obrigado pela ajuda!!


23 Fev 2012, 20:24
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 30 Dez 2011, 10:10
Mensagens: 131
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
antunes existe algum limite em tamanho do json que o android possa ler?

Eu tenho uma tabela no meu banco que existe 2000 registro de contribuintes, gerei o json dessa tabela, para o android ler essas informações é normal? Ele irá ler todos os 2000 registro normalmente? Ou existe um limite? Obrigado.


26 Abr 2012, 10:52
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
douglas.costa escreveu:
antunes existe algum limite em tamanho do json que o android possa ler?

Eu tenho uma tabela no meu banco que existe 2000 registro de contribuintes, gerei o json dessa tabela, para o android ler essas informações é normal? Ele irá ler todos os 2000 registro normalmente? Ou existe um limite? Obrigado.


Já respondi a sua dúvida no seu tópico!!

viewtopic.php?f=5&t=19119

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


26 Abr 2012, 17:41
Perfil WWW
Hello World!
Hello World!

Data de registro: 13 Ago 2010, 22:04
Mensagens: 25
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Opa,

dá pra trabalhar com imagens nesse modelo de web service?
Preciso recuperar imagens para serem exibidas como propagandas. Se alguém tiver algum exemplo, agradeço.

Até mais.

_________________
Pablo Sandrelli


07 Mai 2012, 21:35
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 30 Dez 2011, 10:10
Mensagens: 131
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Antunes blz? Tenho uma dúvida, caso faça a sincronização, para mim poder resetar o banco para iniciar um novo processo de sincronização, qual o processo deveria fazer? Poderia me ajudar com isso, obrigado!!!


20 Jul 2012, 11:37
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
douglas.costa escreveu:
Antunes blz? Tenho uma dúvida, caso faça a sincronização, para mim poder resetar o banco para iniciar um novo processo de sincronização, qual o processo deveria fazer? Poderia me ajudar com isso, obrigado!!!


Rapaz,

Não entendi o que vc quer fazer. Poderia explicar melhor??

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


20 Jul 2012, 19:47
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 30 Dez 2011, 10:10
Mensagens: 131
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Desculpe antunes, eu gostaria de apagar e criar o banco novamente quando eu clicar em um botão. Por exemplo, tenho o meu banco no android criado e ja populado com meus clientes, e quando eu clicar no botão "sincronizar", eu qria excluir o banco e cria-lo novamente. Agradeço a ajuda, abraços.


21 Jul 2012, 16:08
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
douglas.costa escreveu:
Desculpe antunes, eu gostaria de apagar e criar o banco novamente quando eu clicar em um botão. Por exemplo, tenho o meu banco no android criado e ja populado com meus clientes, e quando eu clicar no botão "sincronizar", eu qria excluir o banco e cria-lo novamente. Agradeço a ajuda, abraços.


Rapaz,

Então pelo que eu entendi, a sua dúvida não se encaixa no propósito desse tópico.

Gostaria de pedir que vc crie um novo tópico, com todas as informações necessárias, para tratar essa sua questão.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


21 Jul 2012, 18:07
Perfil WWW
What is Android?
What is Android?

Data de registro: 19 Jul 2012, 23:32
Mensagens: 5
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
tem algum exemplo utilizando autenticação?


25 Jul 2012, 00:30
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Para isso, vc pode colocar um usuário e senha no header das mensagens e verificar se o usuário tem permissão implementando um filter, que ficará antes dos métodos do seu WS. Nele vc lê o header e verifica o usuário. Se os dados estiverem certos vc deixa passar para o seu WS, caso contrário vc devolve uma mensagem de não autorizado.

http://viralpatel.net/blogs/tutorial-ja ... he-tomcat/

Eu estou pra montar um pequeno tutorial de como fazer isso, mas ainda não tive tempo.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


25 Jul 2012, 11:40
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 06 Dez 2010, 14:09
Mensagens: 15
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
antunes
Parabéns pelos tutoriais, fiz os 3 aqui e esta funcionando tudo certo.
Agora queria saber como faço para gerar um arquivo com o web service (tipo um .exe mas acho que não seja bem isso) onde posso instalar em qualquer maquina e o web service vai ficar rodando pra comunicar com o android.
o que devo pesquisar? tem algum tutorial?

Até mais.


27 Jul 2012, 16:45
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Basta vc exportar o seu projeto como WAR file e colocar o arquivo gerado no diretório "webapps" do tomcat, seja instalado no linux ou no windows.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


28 Jul 2012, 00:08
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 30 Dez 2011, 10:10
Mensagens: 131
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
antunes bom dia, gostaria de saber uma coisa, se eu tiver um json com mais de 2000 registro por exemplo, sei que haverá uma certa lentidão no processo, mas isso pode variar conforme o aparelho q esta usando? Por exemplo um smartphone com 512mb de ram vai levar mais tempo que um com 1gb de ram? Ou isso não interfere em nada? Obrigado.


30 Jul 2012, 12:48
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
douglas.costa escreveu:
antunes bom dia, gostaria de saber uma coisa, se eu tiver um json com mais de 2000 registro por exemplo, sei que haverá uma certa lentidão no processo, mas isso pode variar conforme o aparelho q esta usando? Por exemplo um smartphone com 512mb de ram vai levar mais tempo que um com 1gb de ram? Ou isso não interfere em nada? Obrigado.


É mais ou menos por aí, mas também vai entrar nessa conta a conexão 3G!!

Se eu fosse vc faria isso aos poucos, de 100 em 100 ou 200, enfim, faça com cuidado e sempre testando!!

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


30 Jul 2012, 14:48
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 30 Dez 2011, 10:10
Mensagens: 131
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Olá antunes blz?

Estou tendo um problema aqui que nao consigo resolver, tenho uma classe no meu ws com os seguintes atributos:


    private Integer codigo;
    private Integer ano;
    private Integer mes;
    private Integer hidro_codigo;
    private String data_leitura;
    private Integer leitura_atual;
    private String nome_proprietario;
    private Integer sequencia;
    private String nro_hidrometro;
    private Integer cod_endereco;
    private Integer numero;
    private String nome;
    private String hidrometro;


Consigo gerar o json deles normalmente.
[{"codigo":15102,"ano":2012,"mes":4,"hidro_codigo":1828,"data_leitura":"","leitura_atual":712,"nome_proprietario":"DOUGLAS COSTA","sequencia":1,"nro_hidrometro":"A08F364646","cod_endereco":26,"numero":575,"nome":"RUA PROFESSOR OSORIO","hidrometro":"A08F364646"}]


Mas no android qndo faço a busca e adiciono na lista, alguns campos ficam vazios. Estou fazendo dessa maneira:
Minha classe:
@PrimaryKey
    @Column(name="CODIGO")
    private long codigo;
   
    @Column(name="ANO")
    private long ano;
   
    @Column(name="MES")
    private long mes;
   
    @Column(name="HIDRO_CODIGO")
    private long hidro_codigo;
   
    @Column(name="DATA_LEITURA")
    private String data_leitura;
   
    @Column(name="LEITURA_ATUAL")
    private int leitura_atual;
   
    @Column(name="NOME_PROPRIETARIO")
    private String nome_proprietario;
   
    @Column(name="SEQUENCIA")
    private long sequencia;
   
    @Column(name="NRO_HIDROMETRO")
    private String nro_hidrometro;
   
    @Column(name="COD_ENDERECO")
    private Integer cod_endereco;
   
    @Column(name="NUMERO")
    private long numero;
   
    @Column(name="NOME")
    private String nome;
   
    @Column(name="HIDROMETRO")
    private String hidrometro;
   
    @Column(name="LEITURA")
    public int novaLeitura;
   
    @Column(name="CONSUMO")
    public int consumo;
   
    @Column(name="HORA")
    public String hora;


Meu Rest.

    public List<Leitura> getLeitura(int mes, int ano) throws Exception {

        String[] resposta = new WebServiceAgua().get(URL_LEITURA + mes + "/"+ ano);

        ArrayList<Leitura> arrayLeitura = new ArrayList<Leitura>();

        if (resposta[0].equals("200")) {

            Gson gson = new Gson();

            JsonParser parser = new JsonParser();
            JsonArray array = parser.parse(resposta[1]).getAsJsonArray();

            for (int i = 0; i < array.size(); i++) {

                arrayLeitura.add(gson.fromJson(array.get(i), Leitura.class));

            }
            return arrayLeitura;

        } else {
            throw new Exception(resposta[1]);
        }
    }


Alguns campos como, nome_proprietario, nro_hidrometro, cod_endereco, estão vindo vazios. O que sera que pode ser a causa desse problema. Estou usando um framework de persistência, o problema esta nessa classe , pq tenho uma outra no msm projeto que funciona certinho. Sera que vc pode me ajudar com isso? Obrigado desde já! Abraços..


31 Jul 2012, 14:34
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Esse framework de persistência que vc está usando é no android??

Testou o parse sem usar essas anotações?

Pq no seu ws os atributos estão como objetos e não como primitivos (int no lugar de Integer)??

No seu "getLeitura" dê um "sysout" no "resposta[1]" pra gente ver o que está chegando no android.

Ainda dentro do "getLeitura", dê um "sysout" no seu objeto para a gente ver como ele ficou depois do parse.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


31 Jul 2012, 15:58
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 30 Dez 2011, 10:10
Mensagens: 131
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
antunes obrigado pela ajuda, consegui resolver o meu problema, eu não estava pegando da lista os atributos. /66

Abraços!


31 Jul 2012, 17:10
Perfil
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Olá antunes, já vou agradecendo pelos 3 tutoriais, muito bom cara
eu fiz as adaptações desse 3 tutorial, mas não pegou pra mim, eu fiz uns 3 inserts na tabela cliente de forma manual e na hora que clico em Buscar Todos aparece esse erro ai no print
Imagem


a minha linha 162 da classe ClienteDAO ta assim

stmt = conn.prepareStatement("SELECT * FROM cliente ORDER BY id");
 

mesmo eu colocando "SELECT * FROM CLIENTE ORDER BY ID" da o mesmo erro, porque ?

outra duvida besta,
Como eu uso o insert ? desde o outro tutorial não funcionou comigo, mas o lista funcionou ai largei e vim fazer esse,
eu criou uma Activity com um arquivo XML com os campos e depois uso o método inserir(Cliente cliente) passando a Classe Cliente devidamente setada ? e assim mesmo ?

desde já agradeço por tudo antunes =D

_________________
Desenvolvedor Android
about.me/D.H


07 Set 2012, 17:17
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Posta o erro completo pra gente ver o que pode ser!!

Vc tentou executar o projeto exemplo que está anexado no tópico??

Pode ser alguma coisa no seu banco. Posta mais informações!!

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


08 Set 2012, 04:07
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
o log e esse

09-08 16:23:15.615: I/get(324): Result from post JsonPost : 500 : <html><head><title>Apache Tomcat/7.0.29 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>java.lang.NullPointerException
09-08 16:23:15.615: I/get(324):     br.com.droid.dao.ClienteDAO.buscarTodos(ClienteDAO.java:162)
09-08 16:23:15.615: I/get(324):     br.com.droid.model.ClienteBusiness.buscarTodos(ClienteBusiness.java:11)
09-08 16:23:15.615: I/get(324):     br.com.droid.resources.ClienteResource.selTodosGSON(ClienteResource.java:31)
09-08 16:23:15.615: I/get(324):     sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
09-08 16:23:15.615: I/get(324):     sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
09-08 16:23:15.615: I/get(324):     sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
09-08 16:23:15.615: I/get(324):     java.lang.reflect.Method.invoke(Unknown Source)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
09-08 16:23:15.615: I/get(324):     com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
09-08 16:23:15.615: I/get(324):     javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
09-08 16:23:15.615: I/get(324): </pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.29</h3></body></html>
 


o erro que aparece no console do Webservice e esse
Imagem

a minha classe ClienteDAO ta assim

package br.com.droid.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import br.com.droid.factory.ConnectionFactory;
import br.com.droid.model.Cliente;

public class ClienteDAO extends ConnectionFactory {
   
    public int verificaCadastrado(String cpf) {

         int id = 0;
         Connection conn = null;
         ResultSet resultSet = null;
         PreparedStatement stmt = null;
         conn = getConnection();
         try {
             stmt = conn.prepareStatement("SELECT ID FROM cliente WHERE cpf = ?");
             stmt.setString(1, cpf);
             resultSet = stmt.executeQuery();
             if (resultSet.next()) {
                 id = resultSet.getInt("id");
             }
         } catch (SQLException e) {
             e.printStackTrace();
         } finally {
             closeConnection(conn, stmt, resultSet);
         }
         return id;
        }

        public int inserir(Cliente cliente) {

         Connection conn = null;
         conn = getConnection();
         int sucesso = 0;
         int prodsCadastrados = verificaCadastrado(cliente.getCpf());

         if (prodsCadastrados == 0) {
             PreparedStatement stmt = null;
             try {
                 stmt = conn.prepareStatement("INSERT INTO "
                         + "cliente (nome, cpf, endereco) VALUES(?,?,?)");

                 stmt.setString(1, cliente.getNome());
                 stmt.setString(2, cliente.getCpf());
                 stmt.setString(3, cliente.getEndereco());
                 sucesso = stmt.executeUpdate();

                 if (sucesso > 0) {
                     System.out.println("CLIENTE INSERIDO!");
                 }

             } catch (SQLException e) {
                 e.printStackTrace();
                 System.out.println("ERRO AO INSERIR CLIENTE!");
             } finally {
                 closeConnection(conn, stmt);
             }
         } else {
             System.out.println("ERRO: CLIENTE JA CADASTRADO");
             closeConnection(conn);
         }
         return sucesso;
        }

        public int alterar(Cliente cliente) {

         Connection conn = null;
         conn = getConnection();
         PreparedStatement stmt = null;
         int sucesso = 0;
         try {
             stmt = conn
                     .prepareStatement("UPDATE cliente SET nome = ?, SET cpf = ?, SET endereco = ? WHERE id = ?");

             stmt.setString(1, cliente.getNome());
             stmt.setString(2, cliente.getCpf());
             stmt.setString(3, cliente.getEndereco());
             stmt.setInt(4, cliente.getId());
             sucesso = stmt.executeUpdate();
             
             if (sucesso > 0) {
                 System.out.println("CLIENTE ALTERADO!");
             } else {
                 System.out.println("CLIENTE NÃO EXISTE!");
             }
         } catch (SQLException e) {
             e.printStackTrace();
             System.out.println("ERRO AO ALTERAR CLIENTE!");
         } finally {
             closeConnection(conn, stmt);
         }
         return sucesso;
        }

        public int deletar(int id) {

         Connection conn = null;
         conn = getConnection();
         int excluidos = 0;
         PreparedStatement stmt = null;
         try {
             stmt = conn.prepareStatement("DELETE FROM cliente WHERE id = ?");
             stmt.setInt(1, id);
             excluidos = stmt.executeUpdate();
             
             if (excluidos > 0) {
                 System.out.println("CLIENTE REMOVIDO!");
             } else {
                 System.out.println("CLIENTE NÃO EXISTE!");
             }

         } catch (SQLException e) {
             e.printStackTrace();
             System.out.println("ERRO AO DELETAR CLIENTE!");
         } finally {
             closeConnection(conn, stmt);
         }
         return excluidos;
        }

        public Cliente buscar(int id) {

         Connection conn = null;
         ResultSet resultSet = null;
         PreparedStatement stmt = null;
         conn = getConnection();
         Cliente cliente = null;
         try {
             stmt = conn.prepareStatement("SELECT * FROM CLIENTE WHERE ID = ?");
             stmt.setInt(1, id);
             resultSet = stmt.executeQuery();
             while (resultSet.next()) {
                 cliente = new Cliente();
                 cliente.setId(resultSet.getInt("id"));
                 cliente.setNome(resultSet.getString("nome"));
                 cliente.setCpf(resultSet.getString("cpf"));
                 cliente.setEndereco(resultSet.getString("endereco"));
             }
         } catch (SQLException e) {
             e.printStackTrace();
         } finally {
             closeConnection(conn, stmt, resultSet);
         }
         return cliente;
        }

        public ArrayList<Cliente> buscarTodos() {

         Connection conn = null;
         ResultSet resultSet = null;
         PreparedStatement stmt = null;
         conn = getConnection();
         ArrayList<Cliente> listaClientes = null;

         try {

             stmt = conn.prepareStatement("SELECT * FROM CLIENTE ORDER BY ID");
             resultSet = stmt.executeQuery();
             listaClientes = new ArrayList<Cliente>();

             while (resultSet.next()) {
                 Cliente cliente = new Cliente();
                 cliente.setId(resultSet.getInt("id"));
                 cliente.setNome(resultSet.getString("nome"));
                 cliente.setCpf(resultSet.getString("cpf"));
                 cliente.setEndereco(resultSet.getString("endereco"));
                 listaClientes.add(cliente);
             }

         } catch (SQLException e) {
             e.printStackTrace();
             listaClientes = null;
         } finally {
             closeConnection(conn, stmt, resultSet);
         }
         return listaClientes;
        }
   
   
   
   
}
 


e a minha classe ConnectionFactory ta assim

package br.com.droid.factory;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public abstract class ConnectionFactory {
   
   
    // database URL
    private static final String DATABASE_URL = "jdbc:postgresql://localhost:/droid";
    private static final String USERNAME = "postgres";
    private static final String PASSWORD = "postgres";

    public Connection getConnection() {
     Connection con = null;
     try {
         con = DriverManager.getConnection(DATABASE_URL, USERNAME,
                 PASSWORD);
     } catch (Exception e) {
         System.out.println("Erro ao criar conexao.");
         e.printStackTrace();
     }
     return con;
    }

    public void closeConnection(Connection conn, Statement stmt, ResultSet rs) {
     try {
         close(conn, stmt, rs);
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }

    public void closeConnection(Connection conn, Statement stmt) {
     try {
         close(conn, stmt, null);
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }

    public void closeConnection(Connection conn) {
     try {
         close(conn, null, null);
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }

    private void close(Connection conn, Statement stmt, ResultSet rs) {

     try {
         if (rs != null) {
             rs.close();
         }
         if (stmt != null) {
             stmt.close();
         }
         if (conn != null) {
             conn.close();
         }
     } catch (Exception e) {
         System.out.println("Erro ao fechar conexao.");
         e.printStackTrace();
     }
    }
   
   
}
 


eu apenas fiz como ta no tutorial, eu não apliquei nada por fora do que você falou, foi ctrl+c / ctrl+v
o meu postgres e o postgresql-9.1.5-1-windows-x64, eu to usando o driver postgresql-9.1-902.jdbc4

minha URL de conexão da Classe ClienteREST no projeto do android ta assim
private static final String URL_WS = "http://192.168.0.12:8080/WebServiceREST/cliente/";


o que será ?

_________________
Desenvolvedor Android
about.me/D.H


08 Set 2012, 15:32
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Isso acontece pq o seu "getConnection();" está retornando "null".

Confere a sua url de conexão com o banco. Verifica o nome do banco, usuário, senha, etc.

private static final String DATABASE_URL = "jdbc:postgresql://localhost:/droid";


Eu acho que esse ":" depois do localhost, se não tiver uma porta específica, não deveria estar aí, mas não acho que o problema seja esse.

Acho que o problema é o driver de versão diferente que vc está usando, para uma outra versão do postgres. Vc fez certo, escolheu um driver de acordo com a versão do seu banco. Só esqueceu de ler a documentação para saber o que vc precisaria mudar. =D

Para resolver, inclua esse comando dentro do seu método "getConnection()", bem no início dele.

Class.forName("org.postgresql.Driver");


Cada driver, cada versão tem a sua forma de implementação. Na versão que eu estava usando não precisava disso, e nessa que vc está usando precisa.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


08 Set 2012, 18:44
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
muito obrigado antunes, teu certo eu colocando o Class.forname valeu mesmo, mas para inserir e só eu fazer como eu falei antes ?

_________________
Desenvolvedor Android
about.me/D.H


08 Set 2012, 20:59
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
olá antunes, você poderia mim ajudar a fazer o insert ?

o log no console do WebService esse

Set 08, 2012 7:37:01 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Jersey REST Service] in context with path [/WebServiceREST] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
    at com.sun.jersey.json.impl.reader.JsonXmlStreamReader.create(JsonXmlStreamReader.java:110)
    at com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:137)
    at com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:127)
    at com.sun.jersey.json.impl.BaseJSONUnmarshaller.createXmlStreamReader(BaseJSONUnmarshaller.java:116)
    at com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalJAXBElementFromJSON(BaseJSONUnmarshaller.java:111)
    at com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalFromJSON(BaseJSONUnmarshaller.java:100)
    at com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider.readFrom(JSONRootElementProvider.java:129)
    at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111)
    at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:483)
    at com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
    at com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:183)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
 


o log ta saindo assim

09-08 22:37:01.115: W/System.err(396): java.lang.Exception: <html><head><title>Apache Tomcat/7.0.29 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - Servlet execution threw an exception</h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u>Servlet execution threw an exception</u></p><p><b>description</b> <u>The server encountered an internal error (Servlet execution threw an exception) that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>javax.servlet.ServletException: Servlet execution threw an exception
09-08 22:37:01.123: W/System.err(396): </pre></p><p><b>root cause</b> <pre>java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
09-08 22:37:01.123: W/System.err(396):  com.sun.jersey.json.impl.reader.JsonXmlStreamReader.create(JsonXmlStreamReader.java:110)
09-08 22:37:01.134: W/System.err(396):  com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:137)
09-08 22:37:01.134: W/System.err(396):  com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:127)
09-08 22:37:01.134: W/System.err(396):  com.sun.jersey.json.impl.BaseJSONUnmarshaller.createXmlStreamReader(BaseJSONUnmarshaller.java:116)
09-08 22:37:01.143: W/System.err(396):  com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalJAXBElementFromJSON(BaseJSONUnmarshaller.java:111)
09-08 22:37:01.163: W/System.err(396):  com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalFromJSON(BaseJSONUnmarshaller.java:100)
09-08 22:37:01.163: W/System.err(396):  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider.readFrom(JSONRootElementProvider.java:129)
09-08 22:37:01.163: W/System.err(396):  com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111)
09-08 22:37:01.173: W/System.err(396):  com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:483)
09-08 22:37:01.173: W/System.err(396):  com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
09-08 22:37:01.173: W/System.err(396):  com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)
09-08 22:37:01.173: W/System.err(396):  com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
09-08 22:37:01.173: W/System.err(396):  com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:183)
09-08 22:37:01.173: W/System.err(396):  com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
09-08 22:37:01.183: W/System.err(396):  com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
09-08 22:37:01.183: W/System.err(396):  javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
09-08 22:37:01.183: W/System.err(396): </pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/7.0.29 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.29</h3></body></html>
09-08 22:37:01.205: W/System.err(396):  at br.com.droid.webservice.ClienteREST.inserirCliente(ClienteREST.java:55)
09-08 22:37:01.205: W/System.err(396):  at br.com.droid.CadastrarCliente$1.onClick(CadastrarCliente.java:48)
09-08 22:37:01.213: W/System.err(396):  at android.view.View.performClick(View.java:2408)
09-08 22:37:01.213: W/System.err(396):  at android.view.View$PerformClick.run(View.java:8816)
09-08 22:37:01.213: W/System.err(396):  at android.os.Handler.handleCallback(Handler.java:587)
09-08 22:37:01.224: W/System.err(396):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-08 22:37:01.224: W/System.err(396):  at android.os.Looper.loop(Looper.java:123)
09-08 22:37:01.224: W/System.err(396):  at android.app.ActivityThread.main(ActivityThread.java:4627)
09-08 22:37:01.224: W/System.err(396):  at java.lang.reflect.Method.invokeNative(Native Method)
09-08 22:37:01.224: W/System.err(396):  at java.lang.reflect.Method.invoke(Method.java:521)
09-08 22:37:01.233: W/System.err(396):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-08 22:37:01.233: W/System.err(396):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-08 22:37:01.243: W/System.err(396):  at dalvik.system.NativeStart.main(Native Method)
 


para fazer o cadastro eu to criando uma Activity e pegando os valores do TextView e setando no objeto cliente e to passando para o método inserir do ClienteREST, segue o código


package br.com.droid;

import br.com.droid.model.Cliente;
import br.com.droid.webservice.ClienteREST;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class CadastrarCliente extends Activity {

    private Button bt;
    private EditText et_nome;
    private EditText et_cpf;
    private EditText et_endereco;
    private Cliente cliente;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    setContentView(R.layout.cadastro);
   
   
    bt = (Button) findViewById(R.id.button1);
    et_nome = (EditText) findViewById(R.id.et_nome);
    et_cpf = (EditText) findViewById(R.id.et_cpf);
    et_endereco = (EditText) findViewById(R.id.et_endereco);
   
   
    bt.setOnClickListener(new View.OnClickListener() {
       
        public void onClick(View v) {
            // TODO Auto-generated method stub
       
            cliente = new Cliente();
            cliente.setCpf(et_cpf.getText().toString());
            cliente.setEndereco(et_endereco.getText().toString());
            cliente.setId(3);
            cliente.setNome(et_nome.getText().toString());
           
           
            ClienteREST cliREST = new ClienteREST();
           
            try {
                cliREST.inserirCliente(cliente);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                gerarToast(e.getMessage());
            }
           
           
           
        }
    });
   
   
   
   
   
   
   
   
    }
   
   
    private void gerarToast(CharSequence message) {
        int duration = Toast.LENGTH_LONG;
        Toast toast = Toast
                .makeText(getApplicationContext(), message, duration);
        toast.show();
       }
   
   
}

 


eu não conseguir identificar o erro olhando no Log, o que seria ?
to setando o id manualmente porque a sequencia serial não ta pegando no postgres

_________________
Desenvolvedor Android
about.me/D.H


08 Set 2012, 21:44
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Rapaz,

Só com essas informações não dá pra saber o que pode ser, mas confere sua classe Cliente pra ver se tem o "@xmlroot.." e a sua classe resource, como está??

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


09 Set 2012, 05:13
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
a minha classe Cliente do Webservice ta assim

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Cliente {

    private int id;
    private String nome;
    private String cpf;
    private String endereco;

//gets e sets
 


a minha classe ClienteResourse ta assim

package br.com.droid.resources;
import java.util.ArrayList;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;

import br.com.droid.model.*;
import br.com.droid.exception.NoContentException;
import br.com.droid.model.Cliente;

@Path("/cliente")
public class ClienteResource {
   
    @GET
    @Path("/buscarTodos")
    @Produces("application/json")
    public ArrayList<Cliente> selTodos(){
     return new ClienteBusiness().buscarTodos();
    }

    @GET
    @Path("/buscarTodosGSON")
    @Produces("application/json")
    public String selTodosGSON(){
     return new Gson().toJson(new ClienteBusiness().buscarTodos());
    }
   
    @GET
    @Path("/{id}")
    @Produces("application/json")
    public Cliente getCliente(@PathParam("id") int id){
     Cliente cliente = new ClienteBusiness().buscar(id);
     
     if(cliente == null)
         throw new NoContentException("Cliente não encontrado!");
     
     return cliente;
    }
   
    @GET
    @Path("/delete/{id}")
    @Produces("application/json")
    public String deleteCliente(@PathParam("id") int id){
     return new ClienteBusiness().deletar(id);
    }
   
    @POST
    @Path("/inserir")
    @Produces("application/json")
    @Consumes("application/json")
    public String inserirCliente(Cliente cliente) {
     return new ClienteBusiness().inserir(cliente);
    }
   
    @POST
    @Path("/inserirLista")
    @Produces("application/json")
    @Consumes("application/json")
    public String inserirLista(String listaClientesJson) {
     
     Gson gson = new Gson();
     ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
     JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(listaClientesJson).getAsJsonArray();
     
        for (int i = 0; i < array.size(); i++) {
         listaClientes.add(gson.fromJson(array.get(i), Cliente.class));
     }
     
     return new ClienteBusiness().inserirLista(listaClientes);

   
}
   
   
   
   
   
   
   
   
}
 


a minha classe WebServiceCliente do projeto do Android ta assim

package br.com.droid.webservice;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import br.com.droid.HttpClientSingleton;
import android.util.Log;

public class WebServiceCliente {
   
     public final String[] get(String url) {

         String[] result = new String[2];
         HttpGet httpget = new HttpGet(url);
         HttpResponse response;

         try {
             response = HttpClientSingleton.getHttpClientInstace().execute(httpget);
             HttpEntity entity = response.getEntity();

             if (entity != null) {
                 result[0] = String.valueOf(response.getStatusLine().getStatusCode());
                 InputStream instream = entity.getContent();
                 result[1] = toString(instream);
                 instream.close();
                 Log.i("get", "Result from post JsonPost : " + result[0] + " : " + result[1]);
             }
         } catch (Exception e) {
             Log.e("NGVL", "Falha ao acessar Web service", e);
             result[0] = "0";
             result[1] = "Falha de rede!";
         }
         return result;
        }

        public final String[] post(String url, String json) {
         String[] result = new String[2];
         try {

             HttpPost httpPost = new HttpPost(new URI(url));
             httpPost.setHeader("Content-type", "application/json");
             StringEntity sEntity = new StringEntity(json, "UTF-8");
             httpPost.setEntity(sEntity);

             HttpResponse response;
             response = HttpClientSingleton.getHttpClientInstace().execute(httpPost);
             HttpEntity entity = response.getEntity();

             if (entity != null) {
                 result[0] = String.valueOf(response.getStatusLine().getStatusCode());
                 InputStream instream = entity.getContent();
                 result[1] = toString(instream);
                 instream.close();
                 Log.d("post", "Result from post JsonPost : " + result[0] + " : " + result[1]);
             }

         } catch (Exception e) {
             Log.e("NGVL", "Falha ao acessar Web service", e);
             result[0] = "0";
             result[1] = "Falha de rede!";
         }
         return result;
        }

        private String toString(InputStream is) throws IOException {

         byte[] bytes = new byte[1024];
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         int lidos;
         while ((lidos = is.read(bytes)) > 0) {
             baos.write(bytes, 0, lidos);
         }
         return new String(baos.toByteArray());
        }
   
   

}

 


meu ClienteREST da aplicação Android ta assim

package br.com.droid.webservice;

import java.util.ArrayList;
import java.util.List;
import br.com.droid.model.Cliente;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser

public class ClienteREST {
   
    private static final String URL_WS = "http://192.168.0.12:8080/WebServiceREST/cliente/";

    public Cliente getCliente(int id) throws Exception {

     String[] resposta = new WebServiceCliente().get(URL_WS + id);
     
     if (resposta[0].equals("200")) {
         Gson gson = new Gson();
         Cliente cliente = gson.fromJson(resposta[1], Cliente.class);
         return cliente;
     } else {
         throw new Exception(resposta[1]);
     }
    }
   
    public List<Cliente> getListaCliente() throws Exception {

     String[] resposta = new WebServiceCliente().get(URL_WS + "buscarTodosGSON");
//       String[] resposta = new WebServiceCliente().get(URL_WS + "buscarTodos");
     
     if (resposta[0].equals("200")) {
         Gson gson = new Gson();
         ArrayList<Cliente> listaCliente = new ArrayList<Cliente>();
         JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
         
        for (int i = 0; i < array.size(); i++) {
             listaCliente.add(gson.fromJson(array.get(i), Cliente.class));
         }
         return listaCliente;
     } else {
         throw new Exception(resposta[1]);
     }
    }
   
    public String inserirCliente(Cliente cliente) throws Exception {
     
     Gson gson = new Gson();
     String clienteJSON = gson.toJson(cliente);
     String[] resposta = new WebServiceCliente().post(URL_WS + "inserir", clienteJSON);
     if (resposta[0].equals("200")) {
         return resposta[1];
     } else {
         throw new Exception(resposta[1]);
     }
    }
   
    public String deletarCliente(int id) {  
     String[] resposta = new WebServiceCliente().get(URL_WS + "delete/" + id);
     return resposta[1];
    }
   
   
   
   

}

 


eu to conseguindo buscar por id,listar todos, e deletar, mas não compreendo porque não ta incluindo, estranho ne não ?

_________________
Desenvolvedor Android
about.me/D.H


09 Set 2012, 19:37
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Quais os ".jar" que vc colocou no seu projeto??

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


09 Set 2012, 22:02
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
desculpa a demora antunes, faculdade trabalho e tal kkkkk
meus jars são esses, nessa imagem da pra ver os jars do projeto Android e do WebService
Imagem

_________________
Desenvolvedor Android
about.me/D.H


12 Set 2012, 16:16
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Tenta incluir o ".jar" "jsr311-api"!!

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


12 Set 2012, 21:36
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
eu inclui nos 2 projetos mais ainda continua dando o mesmo erro


Set 13, 2012 2:03:11 PM org.apache.catalina.core.AprLifecycleListener init
Informações: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Broadcom\Broadcom 802.11\Driver;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\VDownloader;.
Set 13, 2012 2:03:11 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
Advertência: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:WebServiceREST' did not find a matching property.
Set 13, 2012 2:03:13 PM org.apache.coyote.AbstractProtocol init
Informações: Initializing ProtocolHandler ["http-bio-8080"]
Set 13, 2012 2:03:13 PM org.apache.coyote.AbstractProtocol init
Informações: Initializing ProtocolHandler ["ajp-bio-8009"]
Set 13, 2012 2:03:13 PM org.apache.catalina.startup.Catalina load
Informações: Initialization processed in 3444 ms
Set 13, 2012 2:03:13 PM org.apache.catalina.core.StandardService startInternal
Informações: Starting service Catalina
Set 13, 2012 2:03:13 PM org.apache.catalina.core.StandardEngine startInternal
Informações: Starting Servlet Engine: Apache Tomcat/7.0.29
Set 13, 2012 2:03:18 PM com.sun.jersey.api.core.PackagesResourceConfig init
Informações: Scanning for root resource and provider classes in the packages:
  br.com.droid.resources
Set 13, 2012 2:03:18 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
Informações: Root resource classes found:
  class br.com.droid.resources.HelloWorldResource
  class br.com.droid.resources.ClienteResource
Set 13, 2012 2:03:18 PM com.sun.jersey.api.core.ScanningResourceConfig init
Informações: No provider classes found.
Set 13, 2012 2:03:18 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
Informações: Initiating Jersey application, version 'Jersey: 1.13 06/29/2012 05:14 PM'
Set 13, 2012 2:03:19 PM org.apache.coyote.AbstractProtocol start
Informações: Starting ProtocolHandler ["http-bio-8080"]
Set 13, 2012 2:03:19 PM org.apache.coyote.AbstractProtocol start
Informações: Starting ProtocolHandler ["ajp-bio-8009"]
Set 13, 2012 2:03:19 PM org.apache.catalina.startup.Catalina start
Informações: Server startup in 6282 ms
Set 13, 2012 2:04:34 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Jersey REST Service] in context with path [/WebServiceREST] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.codehaus.jackson.JsonFactory
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    at com.sun.jersey.json.impl.reader.JsonXmlStreamReader.create(JsonXmlStreamReader.java:110)
    at com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:137)
    at com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:127)
    at com.sun.jersey.json.impl.BaseJSONUnmarshaller.createXmlStreamReader(BaseJSONUnmarshaller.java:116)
    at com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalJAXBElementFromJSON(BaseJSONUnmarshaller.java:111)
    at com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalFromJSON(BaseJSONUnmarshaller.java:100)
    at com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider.readFrom(JSONRootElementProvider.java:129)
    at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111)
    at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:483)
    at com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
    at com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:183)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


 

_________________
Desenvolvedor Android
about.me/D.H


13 Set 2012, 16:05
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Mostre como está a estrutura do seu projeto, o src!! Mostre o web.xml tbm.

Tente adicionar os jars do jackson no seu projeto pra ver se resolve.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


13 Set 2012, 19:04
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
nessa imagem ta o src do WebService
Imagem

o meu web.xml ta assim


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>br.com.droid.resources</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
 


não achei nada na web em relação a essa lib antunes

_________________
Desenvolvedor Android
about.me/D.H


14 Set 2012, 15:53
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Eles vem junto dos outros quando vc baixa o .zip!!

Doc do jersey: http://jersey.java.net/nonav/documentat ... apter_deps

Link para o zip: http://maven.java.net/service/local/art ... 1.14&e=zip

Tenta colocá-los no seu projeto.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


14 Set 2012, 16:25
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Olá antunes, obrigado pela ajuda cara, o erro saiu =D, mas agora apareceu outro erro que não consegui achar

o erro e esse

org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 0, número de colunas: 4.
    at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:51)
    at org.postgresql.core.v3.SimpleParameterList.setLiteralParameter(SimpleParameterList.java:112)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.bindLiteral(AbstractJdbc2Statement.java:2174)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.setInt(AbstractJdbc2Statement.java:1212)
    at br.com.droid.dao.ClienteDAO.inserir(ClienteDAO.java:47)
    at br.com.droid.model.ClienteBusiness.inserir(ClienteBusiness.java:17)
    at br.com.droid.resources.ClienteResource.inserirCliente(ClienteResource.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
ERRO AO INSERIR CLIENTE!
 


o meu ClienteDAO do projeto WebServiceREST e esse


package br.com.droid.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import br.com.droid.factory.ConnectionFactory;
import br.com.droid.model.Cliente;

public class ClienteDAO extends ConnectionFactory {
   
    public int verificaCadastrado(String cpf) {

         int id = 0;
         Connection conn = null;
         ResultSet resultSet = null;
         PreparedStatement stmt = null;
         conn = getConnection();
         try {
             stmt = conn.prepareStatement("SELECT ID FROM cliente WHERE cpf = ?");
             stmt.setString(1, cpf);
             resultSet = stmt.executeQuery();
             if (resultSet.next()) {
                 id = resultSet.getInt("id");
             }
         } catch (SQLException e) {
             e.printStackTrace();
         } finally {
             closeConnection(conn, stmt, resultSet);
         }
         return id;
        }

        public int inserir(Cliente cliente) {

         Connection conn = null;
         conn = getConnection();
         int sucesso = 0;
         int prodsCadastrados = verificaCadastrado(cliente.getCpf());

         if (prodsCadastrados == 0) {
             PreparedStatement stmt = null;
             try {
                 stmt = conn.prepareStatement("INSERT INTO "
                         + "cliente (id,nome, cpf, endereco) VALUES(?,?,?,?)");
                 stmt.setInt(0, cliente.getId());
                 stmt.setString(1, cliente.getNome());
                 stmt.setString(2, cliente.getCpf());
                 stmt.setString(3, cliente.getEndereco());
                 sucesso = stmt.executeUpdate();

                 if (sucesso > 0) {
                     System.out.println("CLIENTE INSERIDO!");
                 }

             } catch (SQLException e) {
                 e.printStackTrace();
                 System.out.println("ERRO AO INSERIR CLIENTE!");
             } finally {
                 closeConnection(conn, stmt);
             }
         } else {
             System.out.println("ERRO: CLIENTE JA CADASTRADO");
             closeConnection(conn);
         }
         return sucesso;
        }

        public int alterar(Cliente cliente) {

         Connection conn = null;
         conn = getConnection();
         PreparedStatement stmt = null;
         int sucesso = 0;
         try {
             stmt = conn
                     .prepareStatement("UPDATE cliente SET nome = ?, SET cpf = ?, SET endereco = ? WHERE id = ?");

             stmt.setString(1, cliente.getNome());
             stmt.setString(2, cliente.getCpf());
             stmt.setString(3, cliente.getEndereco());
             stmt.setInt(4, cliente.getId());
             sucesso = stmt.executeUpdate();
             
             if (sucesso > 0) {
                 System.out.println("CLIENTE ALTERADO!");
             } else {
                 System.out.println("CLIENTE NÃO EXISTE!");
             }
         } catch (SQLException e) {
             e.printStackTrace();
             System.out.println("ERRO AO ALTERAR CLIENTE!");
         } finally {
             closeConnection(conn, stmt);
         }
         return sucesso;
        }

        public int deletar(int id) {

         Connection conn = null;
         conn = getConnection();
         int excluidos = 0;
         PreparedStatement stmt = null;
         try {
             stmt = conn.prepareStatement("DELETE FROM cliente WHERE id = ?");
             stmt.setInt(1, id);
             excluidos = stmt.executeUpdate();
             
             if (excluidos > 0) {
                 System.out.println("CLIENTE REMOVIDO!");
             } else {
                 System.out.println("CLIENTE NÃO EXISTE!");
             }

         } catch (SQLException e) {
             e.printStackTrace();
             System.out.println("ERRO AO DELETAR CLIENTE!");
         } finally {
             closeConnection(conn, stmt);
         }
         return excluidos;
        }

        public Cliente buscar(int id) {

         Connection conn = null;
         ResultSet resultSet = null;
         PreparedStatement stmt = null;
         conn = getConnection();
         Cliente cliente = null;
         try {
             stmt = conn.prepareStatement("SELECT * FROM CLIENTE WHERE ID = ?");
             stmt.setInt(1, id);
             resultSet = stmt.executeQuery();
             while (resultSet.next()) {
                 cliente = new Cliente();
                 cliente.setId(resultSet.getInt("id"));
                 cliente.setNome(resultSet.getString("nome"));
                 cliente.setCpf(resultSet.getString("cpf"));
                 cliente.setEndereco(resultSet.getString("endereco"));
             }
         } catch (SQLException e) {
             e.printStackTrace();
         } finally {
             closeConnection(conn, stmt, resultSet);
         }
         return cliente;
        }

        public ArrayList<Cliente> buscarTodos() {

         Connection conn = null;
         ResultSet resultSet = null;
         PreparedStatement stmt = null;
         conn = getConnection();
         ArrayList<Cliente> listaClientes = null;

         try {

             stmt = conn.prepareStatement("SELECT * FROM CLIENTE ORDER BY ID");
             resultSet = stmt.executeQuery();
             listaClientes = new ArrayList<Cliente>();

             while (resultSet.next()) {
                 Cliente cliente = new Cliente();
                 cliente.setId(resultSet.getInt("id"));
                 cliente.setNome(resultSet.getString("nome"));
                 cliente.setCpf(resultSet.getString("cpf"));
                 cliente.setEndereco(resultSet.getString("endereco"));
                 listaClientes.add(cliente);
             }

         } catch (SQLException e) {
             e.printStackTrace();
             listaClientes = null;
         } finally {
             closeConnection(conn, stmt, resultSet);
         }
         return listaClientes;
        }
   
   
   
   
}
 



eu faço a tentativa de inserção assim


bt.setOnClickListener(new View.OnClickListener() {
       
        public void onClick(View v) {
            // TODO Auto-generated method stub
       
            cliente = new Cliente();
            cliente.setId(5);
            cliente.setNome(et_nome.getText().toString());
            cliente.setCpf(et_cpf.getText().toString());
            cliente.setEndereco(et_endereco.getText().toString());
           
           
           
           
            ClienteREST cliREST = new ClienteREST();
           
            try {
                String resposta = cliREST.inserirCliente(cliente);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                gerarToast(e.getMessage());
            }
           
           
           
        }
    });
 

_________________
Desenvolvedor Android
about.me/D.H


18 Set 2012, 16:06
Perfil WWW
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Vamos lá!!

Primeiro vou te mostrar como se lê um log.

Na primeira linha vemos:
org.postgresql.util.PSQLException: O índice da coluna está fora do intervalo: 0, número de colunas: 4.


Isso nos diz que exatamente o que está escrito, que o 0 não é um índice válido para um intervalo de 4 colunas. Bem, se o zero não é válido, tentaremos começar do 1 e terminar no 4.

Agora vamos ver onde exatamente está acontecendo o erro. Busque sempre pele primeira linha que mostra uma classe sua.

at br.com.droid.dao.ClienteDAO.inserir(ClienteDAO.java:47)


Aqui vc consegue ler que na classe "ClienteDAO.java", linha 47 está o erro!!

Eu não contei as linhas, mas possivelmente o erro está nesse trecho, que é justamente onde vc usa o índice 0 para referenciar colunas:


stmt = conn.prepareStatement("INSERT INTO "
                         + "cliente (id,nome, cpf, endereco) VALUES(?,?,?,?)");
                 stmt.setInt(0, cliente.getId());
                 stmt.setString(1, cliente.getNome());
                 stmt.setString(2, cliente.getCpf());
                 stmt.setString(3, cliente.getEndereco());
                 sucesso = stmt.executeUpdate();
 


Deveria estar enumerado de 1 a 4 e não de 0 a 3, assim como o erro nos disse!!

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


18 Set 2012, 20:41
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Muito Obrigado antunes, vi agora a besteira que fiz =/
obrigado por todo o apoio antunes =D

_________________
Desenvolvedor Android
about.me/D.H


19 Set 2012, 16:00
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 28 Mar 2012, 19:20
Mensagens: 16
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Boa tarde antunes

Desenvolvi minha aplicação do colégio usando seu artigo como referencia, estava tudo funcionando até agora.

qual é o problema, estou fazendo um sincronismo do web service onde é necessario trazer algumas informações de uma tabela, então o retorno sera de uma lista

debugando o código descobri que o erro esta nessa parte

 String[] resposta = new WebServiceUsuario().get(URL_WS_MAT+ mat + "," + senha+","+tipo);
         ArrayList<Materia> listaMateria = new ArrayList<Materia>();
         Materia mate = new Materia();
         
         
         if (resposta[0].equals("200")) {
             Gson gson = new Gson();
             JsonParser parser = new JsonParser();
            JsonArray array = parser.parse(resposta[1]).getAsJsonArray();         
            for (int i = 0; i < array.size(); i++) {               
                mate = gson.fromJson(array.get(i), Materia.class);
                listaMateria.add(mate);           
             }
            Log.d("REST",listaMateria.get(1).getGn_Descricao_Materia());
             return listaMateria;
         } else {
             throw new Exception(resposta[1]);
            }
 

Mais necessariamente a hora que que eu estou convertendo o JsonArray para meu objeto.

mate = gson.fromJson(array.get(i), Materia.class);
 

nesse momento meu "mate" esta com todos os seus valores como null, sabe o que pode estar acontecendo de errado?


25 Set 2012, 17:38
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
brahiam.leme escreveu:
Boa tarde antunes

Desenvolvi minha aplicação do colégio usando seu artigo como referencia, estava tudo funcionando até agora.

qual é o problema, estou fazendo um sincronismo do web service onde é necessario trazer algumas informações de uma tabela, então o retorno sera de uma lista

debugando o código descobri que o erro esta nessa parte

 String[] resposta = new WebServiceUsuario().get(URL_WS_MAT+ mat + "," + senha+","+tipo);
         ArrayList<Materia> listaMateria = new ArrayList<Materia>();
         Materia mate = new Materia();
         
         
         if (resposta[0].equals("200")) {
             Gson gson = new Gson();
             JsonParser parser = new JsonParser();
            JsonArray array = parser.parse(resposta[1]).getAsJsonArray();         
            for (int i = 0; i < array.size(); i++) {               
                mate = gson.fromJson(array.get(i), Materia.class);
                listaMateria.add(mate);           
             }
            Log.d("REST",listaMateria.get(1).getGn_Descricao_Materia());
             return listaMateria;
         } else {
             throw new Exception(resposta[1]);
            }
 

Mais necessariamente a hora que que eu estou convertendo o JsonArray para meu objeto.

mate = gson.fromJson(array.get(i), Materia.class);
 

nesse momento meu "mate" esta com todos os seus valores como null, sabe o que pode estar acontecendo de errado?


O que pode estar acontecendo é que as tags do seu JSON não são compatíveis com o seu objeto.

Compare o conteúdo do "resposta[1]" com o que deveria vir no JSON. Dê um "sysout" nele e poste o resultado.

Poste também a sua classe "Materia".

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


25 Set 2012, 17:56
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 28 Mar 2012, 19:20
Mensagens: 16
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Assim que vem o resultado
http://200.145.153.175:8080/ws/Sincroni ... 7910,123,1

Classe materia

package com.acktechnology.banco;

public class Materia {
   
    private String id_Materia, id_Curso_Materia;
    private String gn_Descricao_Materia, gn_Descricao_Curso;
   
    public Materia() {}
   
    public Materia(String gn_Descricao_Materia, String gn_Descricao_Curso, String id_Curso_Materia,String id_Materia){
        this.gn_Descricao_Materia =  gn_Descricao_Materia;
        this.gn_Descricao_Curso = gn_Descricao_Curso;
        this.id_Curso_Materia = id_Curso_Materia;
        this.id_Materia = id_Materia;
       
    }
   
    public String getId_Materia() {
        return id_Materia;
    }
    public void setId_Materia(String id_Materia) {
        this.id_Materia = id_Materia;
    }
    public String getId_Curso_Materia() {
        return id_Curso_Materia;
    }
    public void setId_Curso_Materia(String id_Curso_Materia) {
        this.id_Curso_Materia = id_Curso_Materia;
    }
    public String getGn_Descricao_Materia() {
        return gn_Descricao_Materia;
    }
    public void setGn_Descricao_Materia(String gn_Descricao_Materia) {
        this.gn_Descricao_Materia = gn_Descricao_Materia;
    }

    public void setGn_Descricao_Curso(String gn_Descricao_Curso) {
        this.gn_Descricao_Curso = gn_Descricao_Curso;
    }

    public String getGn_Descricao_Curso() {
        return gn_Descricao_Curso;
    }
   
   
   
   

}

 


25 Set 2012, 18:01
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Então, perceba a diferença entre o seu JSON e a sua classe.


    private String id_Materia, id_Curso_Materia;
    private String gn_Descricao_Materia, gn_Descricao_Curso;
 



{
    "cod_curs" : "7",
    "cod_mat" : "12345",
    "desc_cur" : "Informatica",
    "descricao" : "Java"
}
 


O GSON usa o nome dos seus atributos para encontrá-los no JSON.

Resumindo, o seu JSON deveria ser assim:


{
    "id_Curso_Materia" : "7",
    "id_Materia" : "12345",
    "gn_Descricao_Curso" : "Informatica",
    "gn_Descricao_Materia" : "Java"
}
 


Ou o seus atributos deveriam ser assim:


    private String cod_curs, cod_mat;
    private String desc_cur, descricao;
 


Para entender melhor, leia a doc do GSON aqui: https://sites.google.com/site/gson/gson-user-guide
Site oficial do GSON: http://code.google.com/p/google-gson/


Dica: Em java, o formato padrão utilizado pelos desenvolvedores para os nomes de atributos, classes e métodos é o CamelCase. Referência: http://pt.wikipedia.org/wiki/CamelCase

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


25 Set 2012, 18:42
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 28 Mar 2012, 19:20
Mensagens: 16
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Muito obrigado antunes, não havia verificado isso ainda, mas mesmo assim, muitíssimo obrigado.

PS:. Funcionou normal algora.


25 Set 2012, 19:51
Perfil
Android application
Android application
Avatar de usuário

Data de registro: 11 Jan 2012, 12:44
Mensagens: 88
Localização: Apucarana - PR
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Primeiramente obrigado pelos tutoriais, foi de grande valia, estava fazendo com outra tecnologia usando JSON, mas estava dando problemas.
Agora ficou o detalhe que na tabela de cliente está dando erro, coloquei para imprimir vários logs e o erro está dentro do for, quando vou converter o jsonArray em objeto cliente e adicioná-lo em cliente.

if (resposta[0].equals("200")) {
            Gson gson = new Gson();
            ArrayList<Cliente> clientes = new ArrayList<Cliente>();
            JsonParser parser = new JsonParser();
            JsonArray jsonArray = parser.parse(resposta[1]).getAsJsonArray();
           
            for (int i = 0; i < jsonArray.size(); i++) {
                clientes.add(gson.fromJson(jsonArray.get(i), Cliente.class));
            }
            return clientes;
        } else {
            throw new Exception(resposta[1]);
        }


Acredito que seje algo ligado ao fato de neste json ter datas, nas outras tabelas não tinha o campo data. No meu servidor o banco de dados é Oracle. Segue abaixo o JSON gerado, impresso através do navegador, o formato impresso da Data ficou assim: Jan 29, 2003

[{"idRepres":"JRN","id":105082,"razaoSocial":"CLECIO DA SILVA ( CONSUMIDOR FINAL)","nomeFantasia":" ","tipoLogradouro":"R","nomeLogradouro":"FAUSTO PIO DE MIRANDA","numLogradouro":154,"complementoLogradouro":" ","bairro":"CENTRO","cidade":"APUCARANA","uf":"PR","cep":"86800-000","caixaPostal":" ","tipoPessoa":"F","cnpj":"----------------","ie":"ISENTO","im":" ","cpf":"028.801.049-39","rg":"79752541","orgaoEmissor":"SSP","ufExpedicao":"PR","email":" ","emailXML":" ","telefone":" ","fax":"(043)2102-8034","contato":"CLECIO","contatoCargo":"COMPRADOR","homePage":" ","dataFundacao":"Ago 1, 2008","cobraST":"S","ramoAtividade":"00.11-0","dataCadastro":"Jan 29, 2003","situacao":"A","observacaoSituacao":" ","motivoSuspensao":" ","numeroCheckout":0,"dataUltCompra":"Set 2, 2008","comentario":" ","comentarioCredito":" ","creditoCortado":"N","limiteCredito":0.0,"controle":"I"},{"idRepres":"JRN","id":51952,"razaoSocial":"JOAQUIM RIBEIRO NETO (CONSUMIDOR FINAL)","nomeFantasia":" ","tipoLogradouro":"R","nomeLogradouro":"PAULINO PINTO DE MACEDO","numLogradouro":114,"complementoLogradouro":" ","bairro":"JD FLAMINGOS","cidade":"APUCARANA","uf":"PR","cep":"86.811-240","caixaPostal":"0","tipoPessoa":"F","cnpj":"----------------","ie":"ISENTO","im":" ","cpf":"025.857.469-09","rg":"65348543","orgaoEmissor":"SSP","ufExpedicao":"PR","email":"JOAQUIM@LIDEREMVENDAS.COM.BR","emailXML":"JOAQUIM@LIDEREMVENDAS.COM.BR","telefone":"(043)3424-8089","fax":" ","contato":"JOAQUIM RIBEIRO NETO","contatoCargo":"COMPRADOR","homePage":" ","dataFundacao":"Abr 17, 1999","cobraST":"S","ramoAtividade":"00.11-0","dataCadastro":"Abr 17, 1999","situacao":"A","observacaoSituacao":" ","motivoSuspensao":" ","numeroCheckout":9,"dataUltCompra":"Abr 24, 2012","comentario":" ","comentarioCredito":" ","creditoCortado":"N","limiteCredito":212.65,"controle":"I"},{"idRepres":"JRN","id":105056,"razaoSocial":"VALDINEI DE OLIVEIRA (CONSUMIDOR FINAL)","nomeFantasia":" ","tipoLogradouro":"R","nomeLogradouro":"OSVALDIR A. ROSA","numLogradouro":69,"complementoLogradouro":" ","bairro":"JARDIM TRABALHISTA","cidade":"APUCARANA","uf":"PR","cep":"86800-000","caixaPostal":" ","tipoPessoa":"F","cnpj":"----------------","ie":"ISENTO","im":" ","cpf":"038.158.819-00","rg":"83235438","orgaoEmissor":"SSP","ufExpedicao":"PR","email":" ","emailXML":" ","telefone":" ","fax":" ","contato":"*","contatoCargo":"COMPRADOR","homePage":" ","dataFundacao":"Jan 1, 2000","cobraST":"S","ramoAtividade":"00.11-0","dataCadastro":"Jan 29, 2003","situacao":"A","observacaoSituacao":" ","motivoSuspensao":" ","numeroCheckout":1,"dataUltCompra":"Mar 22, 2006","comentario":" ","comentarioCredito":" ","creditoCortado":"N","limiteCredito":0.0,"controle":"I"}]

Obrigado

_________________
Evandro Choma
evandro@choma.com.br

A dúvida é o principio da sabedoria. Aristóteles


26 Set 2012, 12:20
Perfil WWW
What is Android?
What is Android?

Data de registro: 31 Ago 2011, 00:17
Mensagens: 1
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Parabéns pela iniciativa, ótimo conjunto de tutoriais, foi muito importante para comunicar android com webservicese em um projeto que estou desenvolvendo.


26 Set 2012, 13:48
Perfil
Google employee
Google employee
Avatar de usuário

Data de registro: 05 Abr 2011, 04:47
Mensagens: 1968
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Evandro,

Respondido no outro tópico.

viewtopic.php?f=7&t=17465&p=147940#p147940

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Moto X

App@Bemobi: Apps Club - Loja de Apps baseada em assinatura que dá direito a usar ~400 Apps.

Campanha: Facilite sua vida e a dos outros usuários.
Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.


Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!

Quer trabalhar comigo??


26 Set 2012, 15:46
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 09 Out 2011, 00:07
Mensagens: 81
Localização: João Pessoa
Mensagem Re: [Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Fact
Olá antunes,

Como faço pra mandar um ArrayList de objetos usando esse método que tu implementou pra nos ?
Eu tenho esses métodos no WebService

AtividadeResource

@POST
    @Path("/inserirLista")
    @Produces("application/json")
    @Consumes("application/json")
    public String inserirLista(String listaClientesJson) {
     
     Gson gson = new Gson();
     ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
     JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(listaClientesJson).getAsJsonArray();
     
        for (int i = 0; i < array.size(); i++) {
         listaClientes.add(gson.fromJson(array.get(i), Cliente.class));
     }
     
     return new ClienteBusiness().inserirLista(listaClientes);

   
}
 


AtividadeBusiness

 public String inserirLista(ArrayList<Atividade> listaAtividades) {
         AtividadeDAO AtividadeDAO = new AtividadeDAO();
         String retorno = "";
         for (int i = 0; i < listaAtividades.size(); i++) {
             if(AtividadeDAO.inserir(listaAtividades.get(i)) < 1){
                 retorno += "Erro ao inserir o Atividade de id: "+ listaAtividades.get(i).getId() +"\n";
             }
         }
         if(retorno.length() == 0){
             retorno = "Lista de Atividades inserida no banco com sucesso!";
         }
         return retorno;
        }
 


Como seria o meu REST no APP ?
eu coloquei esse método mais não funcionou

AtividadeREST

public String inserirListaAtividade(ArrayList<Atividade> listaAtividades) throws Exception {
             
             Gson gson = new Gson();
             ArrayList<Atividade> listaAtividadesJSON = gson.toJson(listaAtividades);
             String[] resposta = new WebServiceAtividade().post(URL_WS + "inserirLista", listaAtividadesJSON);
             if (resposta[0].equals("200")) {
                 return resposta[1];
             } else {
                 throw new Exception(resposta[1]);
             }
            }
 


Mais da erro no post, como fazer ?

_________________
Desenvolvedor Android
about.me/D.H


12 Out 2012, 19:36
Perfil WWW
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 140 Mensagens ]  Ir para a página 1, 2, 3  Próximo

Quem está online

Usuários vendo este fórum: (_FM_), ac0502, adautox, Adeja, aechiara, alex.abrantes, alexandre, alfredo_ej, Anakin Skywalker, Andre, andrigo, apoena, arilsonm, AT-AT, beeshop, Biggs Darklighter, Bitetti, Bitor, bomcabelo, Bravox, bravus, brian15, btleandro, caciara, caiodemarco, capo, Carmizini, Cassius, CKorneLL, cleber, Crazy_Droid, czambroni, Darkluna, Darth Vader, Diego, Dudi_FC, edsonel, Eduardo - Brasil, EduardoYC, eluttner, Emanuella, erikopa, Everton Moreira, EvertonLB, Faroli, Felipe Marcondes, ffabiano, flashking, freak, Gnomo, Guilherme, GuilhermeZampieri, guitarro17, hebert, hellbest, hopper.frf, HyagoRules, ice, ismaelbpaiva, jacksonvpj, jcorreajr, Joessi2007, jonasminas, JRSIQUEIRA, julianafsa, juliomar, Juninhooooo, kleberperea, leanderdulac, levita, Lincoln, lucastgomes, madeinnordeste, marcelocastellani, marinho5, maximilianjx, Mayara Trevisol, mcurtis, mrangel, msmdark, Mvitor, mvoto, neimarguerra, neosun, Nice, nina.rm, paulanegreiros, peterson.bah, poponeis, pyrobit, rafaelmonoh, ricdigital, robsonoracle, robsonrg, rodrigo aguiar, romualdo, Romulo, romuloigor, rtodao, Samuka, Shaman286, shazaum, silvio.carlos, Stryder, thosjanas, Tiago Sousa Roch, valaszek, washington, wender, WiseNut, xGambit, xikin, zaquiel e 2 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi