Ver mensagens sem resposta | Ver tópicos ativos Hoje é 07 Dez 2019, 07:38



Responder Tópico  [ 160 Mensagens ]  Ir para a página 1, 2, 3, 4  Próximo
 [Artigo] Web Service RESTful [+Java+JSON+Code] 
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 [+Java+JSON+Code]
Pessoal,

Como a galera tem muita dúvida de como criar um Web Service, por onde começar e tudo mais, decidi ajudar você e criei esse artigo bem simples, mas que vocês, se seguirem até o final, sairão com um Web Service criado e pronto pra usar.

Lembrando que o foco aqui é o Web Service! Sobre o Android e o Banco de Dados, abordaremos, em breve, em outros artigos.


Web Service RESTful com JSON, usando a API Jersey!


Nesse artigo desenvolveremos um Web Service para ser consumido por uma app Android. Sabendo disso, precisamos entender alguns pontos críticos do nosso pequeno Droid.

Processamento e memória: Como não temos disponível grandes quantidades de memória e CPU, precisamos pegar leve com isso. A resposta pra isso é usar um Web Service simples, o RESTful, que não é orientado a conexão, ou seja, não grava o estado das conexões e não utiliza cookies.

Banda disponível para internet: Como as conexões 3G e GPRS ainda estão bem atrás das nossas expectativas, precisaremos pegar leve com isso também, logo, já podemos descartar aqueles protocolos baseados em XML, teremos que aderir ao JSON, já que com mensagens menores, menos gastaremos do nosso plano de dados.

Agora precisamos saber o que é um Web Service, RESTful, JSON e para que eles servem.

Web Service nada mais é que uma “interface” que serve, normalmente, para integrar aplicações diferentes, que por sua própria natureza não se comunicam. Existem diferentes arquiteturas para web service, uma delas é o RESTful, que será abordada nesse artigo, que é bem mais simples que as outras, baseadas em SOAP.

REST é uma técnica de de engenharia de software para sistemas distribuídos desenvolvida pelo Roy Fielding. A REST (Transferência do Estado Representacional) é pretendida como uma imagem do design da aplicação se comportará: uma rede de websites (um estado virtual), onde o usuário progride com uma aplicação selecionando as ligações (transições do estado), tendo como resultado a página seguinte (que representa o estado seguinte da aplicação) que está sendo transferida ao usuário e apresentada para seu uso. Sistemas que seguem os princípios do REST são conhecidos como RESTful.

O que é importante ter em mente é que o principal em um restful web service são as URLs do sistema (geralmente são referidas como restful url’s), e os resources. Um resource é um recurso, uma entidade, ou seja, é um objeto com informação que será representado por meio de um XML. Em geral, a URL para acessar esse recurso será sempre a mesma, porém caso mudemos o método HTTP (GET, POST, PUT, DELETE) o resultado da requisição será diferente. Veja os exemplos tabela abaixo:

Método......exemplo.com/recurso.......exemplo.com/recurso/1
GET...........lista os recursos...............detalhes de um recurso
POST.........adiciona um recurso.........-
PUT...........-.......................................atualiza um recurso
DELETE......-.......................................remove um recurso

Porém saiba que no REST não existe um padrão definido, as operações listadas acima são apenas uma sugestão. Ao desenvolver um web service você não é obrigado a implementar todas as operações para seguir um determinado padrão, você só precisa implementar o que é necessário no seu contexto. Por exemplo, eu posso decidir que os recursos não podem ser apagados e não implementar nenhuma operação para o método DELETE. O que deve ser levado em consideração é a convenção das ações. GET deve ser usado para “leitura”, por exemplo listar os detalhes de um recurso. POST deve ser usado para adicionar novos recursos. PUT deve ser utilizado para alterar recursos já existentes. E DELETE para apagar recursos.

JSON é um formato leve para a notação de dados a serem transmitidos, derivado da sintaxe de objetos em Javascript, uma alternativa ao intensamente utilizado XML. JSON é fortemente recomendado ao usar com Android, por consumir menos banda de nossa conexão com a internet.

Abaixo podemos ver a diferença entre os dois.

JSON

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
       "name": "main_window",
       "width": 500,
       "height": 500
    },
   "image": {
        "src": "Images/Sun.png",
        "name": "sun1",
       "hOffset": 250,
       "vOffset": 250,
       "alignment": "center"
    },
   "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
       "name": "text1",
       "hOffset": 250,
       "vOffset": 100,
       "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}  
 


XML

<widget>
   <debug>on</debug>
   <window title="Sample Konfabulator Widget">
       <name>main_window</name>
       <width>500</width>
       <height>500</height>
   </window>
   <image src="Images/Sun.png" name="sun1">
       <hOffset>250</hOffset>
       <vOffset>250</vOffset>
       <alignment>center</alignment>
   </image>
   <text data="Click Here" size="36" style="bold">
       <name>text1</name>
       <hOffset>250</hOffset>
       <vOffset>100</vOffset>
       <alignment>center</alignment>
       <onMouseUp>
           sun1.opacity = (sun1.opacity / 100) * 90;
       </onMouseUp>
   </text>
</widget>
 


Agora que já sabemos toda a teoria que precisamos, vamos colocar a mão na massa.

Muitos, quando descobrem que precisam desenvolver um WS, acabam desistindo por achar que é muito difícil e demoraria dias para desenvolver. Então, decidi fazer um artigo mostrando a simplicidade de se fazer um, em Java, usando a API Jersey.

Premissas:

* Ter instalado o Eclipse IDE for Java EE;
* Tomcat instalado e configurado(Para esse tutorial, usei a versão 6);
* Ter o JDK EE/JRE instalado;

Obs.: Quem quiser pode tentar o EasyEclipse, que já vem com o tomcat, mas eu nunca usei e nem sei se funciona bem.

Obs2.: O que não falta é tutorial pela internet sobre integração entre Tomcat e Eclipse, já que o foco desse artigo não é esse.

JAX-RS e Jersey

O JAX-RS é uma especificação (a JSR-311) que define a criação de um WebService com arquitetura RESTful. Na sua API, são utilizadas anotações, que simplificam a necessidade extra de configurações. Atualmente, o JAX-RS é parte integrante do Java EE.
Como o JAX-RS é apenas uma especificação, é necessário escolher uma implementação. Entre os projetos que o implementam, temos o Jersey, que é open source e mantido pela Oracle, e que é a implementação de referência do JAX-RS.

Recursos que iremos precisar:

O Jersey deverá ser baixado no site oficial. Haverá duas opções, uma é um arquivo zip com todas as dependências e documentação inclusas. Para o tutorial, usei a versão 1.11 do Jersey.
A outra é o jersey-bundle, um jar que já inclui todas as dependências necessárias. Neste exemplo, vamos utilizar o zip mesmo. Haverão cinco jars que devem ser adicionados ao projeto:

* asm.jar
* jersey-core
* jersey-server
* jersey-servlet
* jsr311-api

Estes são os jars obrigatórios em qualquer projeto utilizando o Jersey. No nosso caso, como vamos utilizar o JSON, vamos precisar de mais alguns jars:

* jersey-json

No caso do JAX-RS, para rodar o nosso web service RESTful é necessário um Web Container. No exemplo irei utilizar o Tomcat, porém qualquer outro WebContainer como o Jetty, ou
mesmo um servidor de aplicação Java EE como o Glassfish ou o JBoss, que já possuem um WebContainer, funcionariam do mesmo jeito.

Outro recurso interessante que vamos utilizar é a api google-gson. Api que serve para converter objetos java em JSON e vice-versa.

Configurando nosso ambiente:

Para começar, devemos criar um projeto do tipo Dynamic Web Project no Eclipse. Para o nosso exemplo, criei um projeto chamado WebServiceREST.

Quando criamos um projeto web, se o tomcat já estiver configurado, na tela de “New Dynamic Web Project”, tem um item chamado “Target runtime”, basta selecionar o “Apache Tomcat v6.0” e o “Dynamic web module version” fica em “2.5”.

Para adicionar as libs no seu projeto, basta copiar os jars para o diretório “lib”. Nesse nosso exemplo, ele fica em “workspace/WebServiceREST/WebContent/WEB-INF/lib”.

Pronto, estamos preparados para um pouco de código.

Antes de começar, vamos rodar um pequeno exemplo para testar o nosso ambiente. Como o de costume, o famoso “Hello World”.


package br.com.droid.resources;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/helloworld")
public class HelloWorldResource {

    @GET
    @Produces("text/plain")
    public String showHelloWorld() {
     return "Olá mundo!";   
    }
}
 


Antes de rodar o exemplo, devemos configurar o web.xml e cadastrar a servlet do Jersey. Ele fica dentro do projeto, em “WebServiceREST/WebContent/WEB-INF”. Preste atenção que devemos passar um parâmetro na inicialização. Esse parâmetro corresponde ao pacote onde estão os nossos resources. Basta seguir o exemplo conforme abaixo:


<?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">
  <display-name>WebServiceREST</display-name>
  <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>
 


Ao tentar rodar o exemplo pela primeira vez, possivelmente o Eclipse mostrará uma caixa de diálogo para escolher qual servidor utilizar. Lembre-se que você já deve ter o Tomcat instalado e configurado no Eclipse para que ele apareça como uma das opções. Bem, após clicar no botão de executar, caso não tenha aparecido nenhuma exception, podemos testar acessando http://localhost:8080/WebServiceREST/helloworld na barra de endereços do navegador. Altere a URL caso você tenha dado um nome diferente para a aplicação, ou tenha configurado o Tomcat em outra porta. Se tudo estiver certo, você deve ver a mensagem “Olá mundo!”. Nada muito complicado, mas já é o suficiente para saber que está funcionando.

Anotações
Pelo nosso exemplo anterior, já vimos o Jersey em ação e a única coisa que nós fizemos foi adicionar algumas anotações à nossa classe. O Jersey é todo baseado em anotações, e existem várias delas. Vamos listar as mais importantes.
@Path – essa anotação recebe uma string como parâmentro e indica qual é o path da URL. No exemplo anterior, tivemos a classe anotada com o valor ”/helloworld”, e por isso que acessamos a URL como http://localhost:8080/WebServiceREST/helloworld.
@GET – anotação que indica qual o método correspondente do HTTP. Como dito anteriormente, podemos ter a mesma URL para ações diferentes desde que o método HTTP também seja diferente. Da mesma forma, temos as anotações @POST, @PUT e @DELETE.
@Produces – anotação que indica qual o mime-type do conteúdo da resposta que será enviada para o cliente. No exemplo acima, foi “text/plain” para indicar que é texto puro. Em um web service isso é pouco usual, em geral vamos utilizar valores como “text/xml” para devolver XML ou "application/json" para devolver JSON.
@Consumes – anotação que indica qual o mime-type do conteúdo da requisição. Em geral é utilizado principalmente em requisições do tipo POST ou PUT, em que o cliente precisa enviar a informação do que ele deseja adicionar/alterar. Do mesmo jeito que o web service “devolve” JSON ou XML, ele pode “consumir” (receber) conteúdo JSON ou XML.

Agora vamos fazer um exemplo bem simples de CRUD. Primeiro vamos precisar de uma entidade, um bean para conter as informações que nós queremos manipular. Veja o exemplo abaixo:


package br.com.droid.model;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Cliente {

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

// getters e setters    
}
 


Note a presença da anotação @XmlRootElement na definição da nossa classe. Ela é fundamental para que o Jersey conheça a representação do objeto Cliente em JSON. Desse modo os atributos irão se tornar nós no momento em que o JSON for enviado ao cliente(Android). E do mesmo jeito, quando chegar um JSON no corpo de uma requisição, o Jersey vai saber converter esse JSON em um objeto do tipo Cliente.

No mundo real, geralmente você vai ter uma tabela “Cliente” em alguma base de dados e vai desejar buscar a informação quando for requisitado. Aqui para que o exemplo fique mais simples e a gente mantenha o foco apenas na funcionalidade do Jersey, vamos utilizar um Singleton com uma lista para simular a nossa base de dados. Veja o exemplo abaixo:

A classe Banco funciona como um DAO. No construtor, aproveitei para inserir um cliente.


package br.com.droid;

import java.util.ArrayList;
import br.com.droid.model.Cliente;

public class Banco {

    private static Banco instance;
    private ArrayList<Cliente> listaClientes;
    private int idCliente;
   
    private Banco() {
     idCliente = 1;
     listaClientes = new ArrayList<Cliente>();
     Cliente cliente = new Cliente();
     cliente.setCpf("111222333-00");
     cliente.setNome("Alexandre Antunes");
     cliente.setEndereco("Rua das ruas, 9");
     inserir(cliente);
    }
   
    public static Banco getBancoInstance(){
     if(instance==null)
         instance = new Banco();
     return instance;
    }
   
    public ArrayList<Cliente> getListaClientes(){
     return listaClientes;
    }
   
    public String inserir(Cliente cliente){
     cliente.setId(idCliente++);
     listaClientes.add(cliente);
     return "Cliente inserido no banco com sucesso!";
    }
   
    public Cliente buscar(int id){
     Cliente cliente = null;
     for (int i = 0; i < listaClientes.size(); i++) {
         if (listaClientes.get(i).getId() == id){
             cliente = new Cliente();
             cliente = listaClientes.get(i);
             break;
         }
     }
     return cliente;
    }
   
    private int getPosition(int id) {
     int pos = -1;
     for (int i = 0; i < listaClientes.size(); i++) {
         if (listaClientes.get(i).getId() == id){
             pos = i;
         }
     }
     return pos;
    }
   
    public String delete(int id){
     Cliente cliente = buscar(id);
     int pos = getPosition(id);
     if(cliente == null || pos < 0){
         return "Cliente não encontrado!";
     } else {
         listaClientes.remove(pos);
         return "Cliente removido com sucesso!";
     }
         
    }
}
 


O próximo passo é criar o nosso WebResource, que é o responsável por receber e responder as requisições dos aplicativos clientes.


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 br.com.droid.Banco;
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 Banco.getBancoInstance().getListaClientes();
    }

    @GET
    @Path("/buscarTodosGSON")
    @Produces("application/json")
    public String selTodosGSON(){
     return new Gson().toJson(Banco.getBancoInstance().getListaClientes());
    }
   
    @GET
    @Path("/{id}")
    @Produces("application/json")
    public Cliente getCliente(@PathParam("id") int id){
     Cliente cliente = Banco.getBancoInstance().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 Banco.getBancoInstance().delete(id);
    }
   
    @POST
    @Path("/inserir")
    @Produces("application/json")
    @Consumes("application/json")
    public String inserirCliente(Cliente cliente) {
     return Banco.getBancoInstance().inserir(cliente);
    }
}
 


Reparem que tenho 2 métodos fazendo a mesma coisa, um é o selTodos() e o outro é o selTodosGSON(). Por enquanto não faz muito sentido ter esses dois métodos, mas quando a gente estiver fazendo o nosso app Android para conumir esse WS, veremos a diferença na prática.

Em um deles eu deixei o Jersey devolver o JSON e no outro eu usei o GSON para gerar o JSON.

O que acontece é que o jersey não se entende bem com o GSON, mas precisamos que o GSON saiba ler o JSON devolvido e mapear no nosso objeto quando estivermos no Android, então vamos usar GSON<=>GSON que não tem erro!!

O bônus:

Com certeza vocês devem ter reparado na linha:

throw new NoContentException("Cliente não encontrado!");


Que está na classe ClienteResource, dentro do método getCliente(). Então, o que fiz foi apenas criar uma exceção “customizada” para conseguir devolver um objeto mapeado em JSON ou um erro.


package br.com.droid.exception;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

public class NoContentException extends WebApplicationException {
    private static final long serialVersionUID = 1L;

    public NoContentException(String mensagem) {
     super(Response.status(Status.NOT_FOUND).entity(mensagem).build());
    }
   
}
 


Para que eu consiga mapear os erros no android, fiz uma associação com os erros do HTTP. Assim, o “404 Not Found” já me diz o que preciso saber sobre o que aconteceu, bastando colocar no corpo da mensagem http algo mais expecífico como “Cliente não encontrado!”. O interessante é que o WS me devolve essa mensagem de erro em forma de “String”, então posso jogá-la direto na tela.

Poderia ser um “401 Unauthorized” para devolver uma falha na tentativa de login.

Uma mensagem sem erro é retornado “200 OK” e no corpo da mensagem, nesse caso, o objeto “Cliente” em forma de JSON.

Pontos fortes:

* Não preciso ficar mapeando os erros com inteiro, por exemplo: “-1” se não foi encontrado, “0” se deu tudo certo e por aí vai.
* O Android não precisa saber o tipo de erro, ele pega a mensagem e joga na tela.
* Fácil de implementar e de se organizar.

Ponto fraco:

* Essa mensagem vai consumir mais “dados” do que se fosse um caracter apenas.

Agora a parte mais importante, vamos testar o nosso Web Service.

Para testá-lo vamos precisar apenas do Poster, uma extenção do Firefox e Chrome para testar web service ou qualquer outro “web resource” que trabalhe com requisições HTTP.

Depois de devidamente instalado, vamos ao que interessa. Pelo eclipse, inicie o seu projeto, da mesma dorma que fizemos anteriormente com o “Hello World”, botão direito no projeto>Run As>Run on Server.

Vá para o Firefox, abra o Poster, digite a url abaixo no campo URL do Poster e clique em “GET”:

http://localhost:8080/WebServiceREST/cl ... uscarTodos

O retorno deve ser esse:

{"cliente":{"cpf":"111222333-00","endereco":"Rua das ruas, 9","id":"1","nome":"Alexandre Antunes"}}


Para inserir um cliente, basta enviar para o WS o JSON do novo cliente para a url:

Novo cliente:

{"cpf":"000333444-00","endereco":"Rua das ruas, 21","id":"0","nome":"Michel Antunes"}


URL: http://localhost:8080/WebServiceREST/cliente/inserir

Lembrando que agora você deve usar o método POST, já que está enviando dados ao WS.

Outra coisa importante é dizer qual o Content Type da mensagem que vc está enviando, que no nosso caso é “application/json”.

Agora é só brincar!!


Atualização...(10/02/2012)

Recebi uma pergunta de um colega do fórum sobre a possibilidade de enviar uma lista ao WS, ao contrário de como já fizemos de consumir uma lista do WS. Para demonstrar como como fazer, abri essa atualização.

Para prepararmos o nosso WS para receber essa lista, no mundo real, precisaremos fazer modificações na camada Business e na Resources, mas como o nosso é apenas um lab, modificaremos a classe Banco e a ClienteResource.

Não cheguei a explicar o que é e o que faz a camada "Business" porque não temos ela nesse projeto, mas basicamente ele fica entre a camada DAO e a camada Resources. Ela fica responsável por toda a manipulação, seja verificação, validação ou qualquer outra coisa que o objeto precise, antes de enviá-lo ao DAO. Explicarei melhor esse processo no nosso terceiro Artigo.

Vamos começar de dentro pra fora, ou seja, do sentido Banco até Interface do usuário ou WS, que é o nosso caso.

Na classe Banco, incluí apenas um método, que recebe uma lista de clientes e inclui no banco.


public String inserirLista(ArrayList<Cliente> listaCliente) {
     for (int i = 0; i < listaCliente.size(); i++) {
          inserir(listaCliente.get(i));
     }
     return "Lista de clientes inserida no banco com sucesso!";
}
 


E na classe ClienteResource incluí o método que vai se comunicar com o mundo externo.


@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 Banco.getBancoInstance().inserirLista(listaClientes);
}
 


Percebam que eu voltei a usar a api google-gson pelo mesmo fato anterior, compatibilidade entre essa api e o Jersey.

Bom, é isso!! Simples, rápido e muito fácil!! /uu
Abraços!!

PS.: Tenham paciência que vão sair, eu sou um só!! /ww
PS2.: Se tiver algum erro, por favor, me avise para que a correção seja feita.


Fontes e referências:
Artigo sobre WS REST: http://www.k19.com.br/artigos/criando-u ... l-em-java/
Artigo sobre WS REST usando JSON: http://www.k19.com.br/artigos/webservic ... ando-json/
Tese do Roy Fielding: http://www.ics.uci.edu/~fielding/pubs/d ... _style.htm
REST na Wikipedia: http://en.wikipedia.org/wiki/Representa ... e_Transfer
REST na Wikipedia (pt-BR): http://pt.wikipedia.org/wiki/REST
JSON na Wikipedia: http://pt.wikipedia.org/wiki/JSON


Não percam os próximos Artigos:

[Artigo] Web Service RESTful 2 [+Consumir+Android]
[Artigo] Web Service RESTful 3 [+PgSQL+DAO+Business+Factory]


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??


07 Fev 2012, 22:39
Perfil WWW
Developing Applications
Developing Applications
Avatar de usuário

Data de registro: 30 Dez 2007, 13:08
Mensagens: 548
Localização: Florianópolis - SC
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Um belo artigo alexandre!!! parabéns cara!!

_________________
Google

Siga o Portal Android no twitter: @portal_android

- Nunca deixe de compartilhar a solução de algum problema;
- Críticas, dúvidas ou sugestões relacionadas ao Portal Android? Participe do Portal;
- Venda, troca, compra? Classificados;
- Faça uma busca antes de postar, sua dúvida já pode ter sido respondida. Mecanismo de busca 1, Mecanismo de busca 2;
- Não crie tópicos com títulos tipo "AJUDA URGENTE", "IMPORTANTE", "AJUDA POR FAVOR", "ESTOU DESESPERADO", etc...


07 Fev 2012, 22:47
Perfil ICQ WWW
Google employee
Google employee

Data de registro: 17 Jul 2011, 11:55
Mensagens: 2657
Localização: São Paulo
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Parabéns, antunes! Muito bom mesmo.
E obrigado por compartilhar o know-how!
Tudo de bom!

_________________
Abraços
___________
Novo App: CalcMat - Calculadora de materiais para concreto
Blog: Agorandroid - sobre programação Android
Twitter: @Agorandroid
___________
Campanha: Facilite sua vida e a dos outros usuários
Cuide do ciclo de vida do seu tópico:
no onCreate(): seja claro, se necessário poste o código e as mensagens de erro.
no onClick(): responda às sugestões.
no onStop(): evite "ninguém?", "alguém?", etc. Procure acrescentar alguma nova informação.
no onDestroy(): resolvido o assunto, poste imediatamente a solução, e, coloque no título do primeiro post [Resolvido].


08 Fev 2012, 08:19
Perfil
Google employee
Google employee

Data de registro: 28 Jan 2011, 11:42
Mensagens: 1037
Localização: Rio Grande do Sul
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes, parabéns pela iniciativa.

Até hoje não tinha desenvolvido nada que precisasse de WS, porém após a leitura do teu artigo, tive umas ideias que talvez possa colocá-las em prática...

Novamente, parabéns pela iniciativa!


22 Fev 2012, 11:34
Perfil
What is Android?
What is Android?

Data de registro: 07 Ago 2011, 20:17
Mensagens: 2
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Olá,
não entendi como faço para inserir dados através do Poster. Poderia das uma explicação melhor?

Ótimo artigo, parabéns!


Editado pela última vez por ramoniks em 01 Mar 2012, 00:03, num total de 1 vezes



29 Fev 2012, 22:41
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 [+Java+JSON+Code]
É que faltou vc importar a lib GSON para o seu projeto!!

Dê uma lida na parte de recursos necessários que vc vai encontrar o link para baixar!!

Está nessa linha:

Citação:
Outro recurso interessante que vamos utilizar é a api google-gson. Api que serve para converter objetos java em JSON e vice-versa.


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??


01 Mar 2012, 00:01
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 28 Jan 2012, 19:23
Mensagens: 161
Localização: Blumenau/SC
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Olá Antunes

Obrigado pelo tutorial, show de bola, quero fazer logo os outros dois.

Algumas observações:
Foi coisa de noob, mas pulei o passo de baixar o GSon e copiar os .jar para o projeto, então se alguém teve problemas com o import do "com.google.gson.Gson;" é este o problema.
Somente reforçando que na hora de passar os parâmetros na url tem que respeitar maiúscula/minuscula(Case sensitive).

Estou com um problema, quando insiro um cliente pela url, ele adiciona somente a id, não tive tempo de analisar o fonte para ver se acho o problema, pretendo fazer isto amanhã.

Depois que já se domina um conteúdo, é difícil conseguir escrever um passo a passo para alguém que não sabe nada do conteúdo, porém, você conseguiu fazê-lo, parabéns.

_________________
Jonathan Rafael Zanella
Motorola Defy - Gingerbread(2.3.5)
Samsung Galaxy Nexus - Jelly Bean(4.2.2)

Programador C++ e Android profissionalmente.

Campanha: Facilite sua vida e a dos outros usuários
Objetivo: Gerêncie o ciclo de vida do seu tópico: criação, respostas, solução, agradecimentos e [RESOLVIDO] no título do primeiro post.


01 Mar 2012, 00:03
Perfil
What is Android?
What is Android?

Data de registro: 07 Ago 2011, 20:17
Mensagens: 2
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
antunes escreveu:
É que faltou vc importar a lib GSON para o seu projeto!!

Dê uma lida na parte de recursos necessários que vc vai encontrar o link para baixar!!

Está nessa linha:

Citação:
Outro recurso interessante que vamos utilizar é a api google-gson. Api que serve para converter objetos java em JSON e vice-versa.


Abraços!


Obrigado, consegui resolver!
A dúvida agora é como inserir os dados através do Poster.
Outra pergunta, teria algum tutorial para indicar, que possa adaptar esta aplicação para salvar em um bando de dados mySql?

Muito obrigado!!


01 Mar 2012, 00:05
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 [+Java+JSON+Code]
Para usar o mysql, vc vai apenas alterar a classe factory e mudar o driver!!

http://dev.mysql.com/downloads/connector/j/
http://dev.mysql.com/doc/refman/5.1/en/ ... vermanager

Para inserir dados usando o poster, vc coloca a url no lugar dela, coloca o JSON do objeto a ser enviado no corpo da mensagem(content), coloca "application/json" no "Content Type" e clica em post!!

Depois farei um mini tuto do poster e adiciono essa parte do mysql nesse tutorial!!

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??


01 Mar 2012, 13:08
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 [+Java+JSON+Code]
jonathanrz escreveu:
Olá Antunes

Obrigado pelo tutorial, show de bola, quero fazer logo os outros dois.

Algumas observações:
Foi coisa de noob, mas pulei o passo de baixar o GSon e copiar os .jar para o projeto, então se alguém teve problemas com o import do "com.google.gson.Gson;" é este o problema.
Somente reforçando que na hora de passar os parâmetros na url tem que respeitar maiúscula/minuscula(Case sensitive).


Bem lembrado!! Depois vou editar o artigo para incluir essas observações!!

jonathanrz escreveu:
Estou com um problema, quando insiro um cliente pela url, ele adiciona somente a id, não tive tempo de analisar o fonte para ver se acho o problema, pretendo fazer isto amanhã.


Precisando de qualquer ajuda é só falar!! /ww

jonathanrz escreveu:
Depois que já se domina um conteúdo, é difícil conseguir escrever um passo a passo para alguém que não sabe nada do conteúdo, porém, você conseguiu fazê-lo, parabéns.


Muito obrigado pela força e pela contribuiçã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??


01 Mar 2012, 20:34
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 09 Jan 2012, 18:00
Mensagens: 39
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Oi Antunes,
como faço pra gerar o executavel do projeto pra rodar no servidor?
É um jar? como coloco meu projeto no servidor?


02 Mar 2012, 13:41
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 [+Java+JSON+Code]
TathaNunes escreveu:
Oi Antunes,
como faço pra gerar o executavel do projeto pra rodar no servidor?
É um jar? como coloco meu projeto no servidor?


Basta clicar com o botão direito no projeto e depois em "export". Eu não lembro direito de cabeça, mas vai ter uma parte que vc escolhe o tipo de arquivo a ser exportado, para uma aplicação web é ".war".

Depois basta vc copiar esse ".war" para o diretório "ROOT", que está dentro de "webapp", dentro dos diretórios do Tomcat.

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??


02 Mar 2012, 14:15
Perfil WWW
What is Android?
What is Android?

Data de registro: 16 Mar 2012, 15:27
Mensagens: 3
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Vai parecer a maior IDIOTICE do mundo, mas vamos lá...

Onde eu edito o conteudo de "package br.com.droid.resources"???

Não consegui achar o local onde eu abro pra editar o mesmo...


Nunca usei o eclipse, me perdoem pela ignorância.


19 Mar 2012, 16:28
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 [+Java+JSON+Code]
MaxGama escreveu:
Vai parecer a maior IDIOTICE do mundo, mas vamos lá...

Onde eu edito o conteudo de "package br.com.droid.resources"???

Não consegui achar o local onde eu abro pra editar o mesmo...


Nunca usei o eclipse, me perdoem pela ignorância.


Primeiro localize a aba "package explorer" que fica ao lado esquerdo do seu eclipse. Depois ache o seu projeto e abra-o, dentro dele vc verá um diretório "src" que contém os seus pacotes.

Dentro do pacote vc vai encontrar suas classes.

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??


19 Mar 2012, 20:15
Perfil WWW
What is Android?
What is Android?

Data de registro: 16 Mar 2012, 15:27
Mensagens: 3
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes,

1º obrigado pela agilidade em responder!

2º Eu consegui até o SRC, abaixo dele tem o HelloWorldResource, que eu criei e já editei, conforme o tutorial... MAS O 1º trecho de código eu não consegui colocar... não achei qual seria o local EXATO para inseri-lo.


Não sei se me fiz entender... Estou um tanto quanto perdido no Eclipse...


19 Mar 2012, 20: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 [+Java+JSON+Code]
MaxGama escreveu:
Antunes,

1º obrigado pela agilidade em responder!

2º Eu consegui até o SRC, abaixo dele tem o HelloWorldResource, que eu criei e já editei, conforme o tutorial... MAS O 1º trecho de código eu não consegui colocar... não achei qual seria o local EXATO para inseri-lo.


Não sei se me fiz entender... Estou um tanto quanto perdido no Eclipse...



Vc criou ele logo abaixo do "src" ou colocou ele dentro do pacote??

Para entender esse sistema de pacote é simples. O pacote nada mais é que uma arvore de diretórios.

Ou seja, o "src" é o diretório raíz e dentro dele vc coloca o seu pacote.

No caso do exemplo o pacote raiz é "br.com.droid", ou seja, se vc for no "explorer" verá que dentro do seu projeto terá um diretório chamado "src" e dentro dele um chamado "br", que dentro tem um "com" e que dentro desse tem um chamado "droid".

Resumindo...

Isso: br.com.droid.resources
é igual a isso: src/br/com/droid/resources

Esses pacotes são usados para organizar o seu projeto, assim vc não deita aquele monte de classe na raíz do seu projeto.

Para criar um pacote, vc pode clicar com o botão direito no "src" e ir em "new>package". Também pode criar na hora de criar uma classe.

Te aconselho a pegar alguns tutoriais sobre o eclipse e projetos Java e dar uma lida. Coisa rápida, logo vc pega o jeito.

Outra dica é baixar o meu projeto completo e dar uma boa fuçada na estrutura dele que vc vai entender!!

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??


19 Mar 2012, 21:04
Perfil WWW
What is Android?
What is Android?

Data de registro: 16 Mar 2012, 15:27
Mensagens: 3
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes,

Te agradeço muito a presteza nas respostas.

Quanto aos pacotes... no meu 'src' SÓ tem a 'pasta' 'br.com.android' e não está separada em subpastas (igual ao seu projeto que eu baixei)... só tem uma inteira...

Mas não tem problema não, farei o que vc me aconselhou e darei uma lida no Esclipse.


Muito obrigado pelo seu tempo!


20 Mar 2012, 14:59
Perfil
What is DDMS?
What is DDMS?

Data de registro: 23 Abr 2012, 01:23
Mensagens: 35
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Valeu pela resposta no outro Tópico antunes =D , então esse Push vai me ferrar .Eu preciso de uma "resposta" do servidor até mesmo pra enviar o valor do produto etc...Sera que tem como contornar isso ? A e o link do jersey esta offline =X ,Obrigado pela atenção ,Abraços


30 Abr 2012, 04: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 [+Java+JSON+Code]
Então, o "push" não é pra vc ter uma resposta do servidor, ele é para vc ter uma requisição do servidor para o cliente. Caminho contrário ao natural, que é o cliente fazendo requisições. Podemos fazer uma associação com uma página na internet, que o browser sempre faz as requisições e a página responde. O WS trabalha dessa mesma forma, como se fosse um site. Ele é totalmente dependente dessas requisições para enviar alguma coisa para o cliente.

Se vc precisa que o servidor faça requisições para o cliente, vc pode simular isso como forçar o cliente a fazer algumas requisições constantes e no servidor, aproveitar isso pra mandar o que vc tem que mandar.

É claro que vc não terá a mesma eficiência de um socket, mas funciona, e não será em tempo real, já que o servidor terá de esperar uma requisição do cliente para enviar alguma coisa de interesse dele.

Não sei se fui suficientemente claro na explicação, mas é por aí.

Qualquer coisa fala que eu tento uma outra explicaçã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??


30 Abr 2012, 14:52
Perfil WWW
Application Life Cycle
Application Life Cycle

Data de registro: 29 Mar 2012, 11:00
Mensagens: 218
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Meu ta dando erro em executar sevidor

14/05/2012 10:48:33 org.apache.catalina.core.AprLifecycleListener init
INFO: 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\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\VDownloader;C:\Users\Gustavo\Downloads\eclipse;
14/05/2012 10:48:33 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:WebServiceREST' did not find a matching property.
14/05/2012 10:48:33 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Teste' did not find a matching property.
14/05/2012 10:48:33 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
14/05/2012 10:48:33 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 336 ms


14 Mai 2012, 12:50
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 [+Java+JSON+Code]
Faça o seginte:

Dê dois clicks no seu server, que abrirá a configuração dele.

Na parte "server options", marque a opção "Publish module contents to separate XML files".

Agora reinicie o seu server que deve resolver!!

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 Mai 2012, 17:36
Perfil WWW
What is Android?
What is Android?

Data de registro: 19 Mai 2012, 23:56
Mensagens: 5
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Me diz uma coisa,

você ja viu algum WebService C# (asp.net mvc 3) RESTful com JSON?


21 Mai 2012, 23:56
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 [+Java+JSON+Code]
Ver eu nunca vi, pq trabalho com Java, mas sei que existe. Inclusive pode ser feito com a maioria das linguagens (Java, C#, Python, Delphi, PHP e etc.)!! Até pq estamos falando de padrões de desenvolvimento, que não definem a tecnologia/linguagem!!

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??


22 Mai 2012, 03:14
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 [+Java+JSON+Code]
antunes, estou com um duvida aqui, caso eu precise buscar um cliente, eu passo o "id" como parametro, como no trecho abaixo;
@GET
    @Path("/{id}")
    @Produces("application/json")
    public Cliente getCliente(@PathParam("id") int id){
     Cliente cliente = Banco.getBancoInstance().buscar(id);
     
     if(cliente == null)
         throw new NoContentException("Cliente não encontrado!");
     
     return cliente;
    }


E caso eu precise passar 2 parametros alem de 1 so, por exemplo, preciso q ele buque o meu cliente do ID = 1, e ano = 2012, no caso tenho com chave composta, por isso tenho essa duvida, como ficaria?
@Path("/{id, ano}") ou
@Path("/{id}/{ano}")


Espero que possa me ajudar, obrigado.


22 Mai 2012, 11: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 [+Java+JSON+Code]
É a sua segunda opção!!


@GET
    @Path("/{id}/{ano}")
    @Produces("application/json")
    public Cliente getCliente(@PathParam("id") int id, @PathParam("ano") int ano){
     //TODO
    }
 


Testa aí que deve funcionar!!

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??


22 Mai 2012, 14:27
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 [+Java+JSON+Code]
antunes, funcionou certinho, obrigado pela dica /uu


23 Mai 2012, 10:26
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 24 Nov 2011, 15:01
Mensagens: 123
Localização: São Paulo
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes Primeiramenta Parabens pelo tutorial !!!

Estou com uma pequena duvida como seria a url para eu inserir um novo registro?

Não consegui inserir um objeto json.

Fico no aguardo abraços !!!


23 Mai 2012, 18:58
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 [+Java+JSON+Code]
Dá uma lida nesse outro Artigo que ensino como se faz esse envio para o WS, que deve ser feito como POST!!

viewtopic.php?f=7&t=17465

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??


24 Mai 2012, 01:53
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 24 Nov 2011, 15:01
Mensagens: 123
Localização: São Paulo
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Vlw Antunes Perfeito

Porém estou com um probleminha aqui agora a lista esta sendo retornada com erro

ela nao esta retornando os dados esta retornando um negocio estranho

br.com.ExConsumirWs.Cliente@4059f688 --> 1 registro
br.com.ExConsumirWS.Cliente@405a03a8 -->2 registro

e assim vai
....

Nao sei se estou certo mas axo q a Gson nao esta convertendo

Segue o cod:


         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].toString()).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]);
         }
        }


Fico no aguardo abraços !!!


25 Mai 2012, 17:29
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 [+Java+JSON+Code]
Como vc fez para mostrar esses valores??

Foi usando o "toString()"?? Se foi, é isso mesmo que ele vai te retornar. A não ser que vc implemente esse método na sua classe Cliente.

Posta o seu código que envia a lista no WS!!

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 Mai 2012, 23:13
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 06 Mai 2012, 20:36
Mensagens: 15
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Bom dia,

Sou novo nesse ramo e estou desenvolvendo meu TCC nesta área e preciso também criar o web service. Eu fiz os passos iniciais, mas está dando o erro, quando foi no browser verificar, não exibe o helloworld e sim:

WebApplication Jersey REST Service com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages br.com.droid.resources 1 Jersey REST Service /* index.html index.htm index.jsp default.html default.htm default.jsp..


E se possível preciso entrar em contato contigo urgente!

_________________
Halyson Lima Gonçalves
Software Developer OS Android


26 Mai 2012, 17:59
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 [+Java+JSON+Code]
Qual a url que vc está tentando acessar??

Vc está rodando o exemplo do Artigo ou um que vc fez??

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 Mai 2012, 18:50
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 06 Mai 2012, 20:36
Mensagens: 15
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Boa Noite, consegui fazer um funcionar...
Tenho uma outra dúvida, estou desenvolvendo o WS para que minha app consulte notas no banco de dados. Gostaria de saber o seguinte, já existe um software para gerenciamento dos dados dos alunos, so que web. Consequentemente, ela dispõem de um BD, mas quando há acesso a app web, é requisitado a matrícula e senha do aluno, como fazer esse processo de validação? Na minha app, eu tenho que enviar os dados, por meio do POST?

Desde já agradeço!

_________________
Halyson Lima Gonçalves
Software Developer OS Android


26 Mai 2012, 19: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 [+Java+JSON+Code]
Para usar autenticação vc pode usar o OAuth!!

Assim vc pode validar quem vai consumir o seu WS.

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 Mai 2012, 21:45
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 06 Mai 2012, 20:36
Mensagens: 15
Localização: Rio de Janeiro
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Bom Dia,

Obrigado pela resposta anterior. Eu sou totalmente novo e meu tcc é nesse ramo.

Gostaria de saber por exemplo, na hora que você diz:

"Para inserir um cliente, basta enviar para o WS o JSON do novo cliente para a url:
Novo cliente:
{"cliente":{"cpf":"000333444-00","endereco":"Rua das ruas, 21","id":"0","nome":"Michel Antunes"}}
URL: http://localhost:8080/WebServiceREST/cliente/inserir"

Tenho uma dúvida meio noob. Eu tenho o plugin Poster instalar, eu irei passar na URL assim:

http://localhost:8084/WebServiceApreend ... e/inserir/{"cliente":{"cpf":"000333444-00","endereco":"Rua das ruas, 21","id":"0","nome":"Michel Antunes"}}

?

_________________
Halyson Lima Gonçalves
Software Developer OS Android


27 Mai 2012, 11:42
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 [+Java+JSON+Code]
Na hora de inserir vc deve manda o seu JSON no corpo da mensagem HTTP, usando o método POST, e não na url.

Dá uma olhada nesse outro artigo que vc vai entender.

viewtopic.php?f=7&t=17465

Eu fiz 3 Artigos, que vão desde o banco de dados do WS até o Android, formando uma solução completa para o que vc precisa. Acho que seria interessante vc dar uma lida nos 3.

No final de cada artigo tem o link para os outros 2.

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??


27 Mai 2012, 12:44
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 24 Nov 2011, 15:01
Mensagens: 123
Localização: São Paulo
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Bom dia Antunes então mas como faço para ele retornar os dados que estao no json ?

meu codigo esta assim :

public class ClienteREST {
     private static final String URL_WS = "http://192.168.0.14:8085/BancoDados/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>();
           
            JsonArray array = new JsonParser().parse(resposta[1]).getAsJsonArray();
             
            for (int i = 0; i < array.size(); i++) {
               
                  java.lang.reflect.Type collectionType = new TypeToken<List<Cliente>>(){}.getType();
                 listaCliente.add(gson.fromJson(array.get(i), Cliente.class));
                 
                 Log.i("Gson","passou no json");
             }
             return listaCliente;
         } else {
             throw new Exception(resposta[1]);
         }
        }


ListActivity:

public class ListaClientes extends ListActivity {

     @SuppressWarnings("unchecked")
    @Override
        protected void onCreate(Bundle savedInstanceState) {
         // TODO Auto-generated method stub
         super.onCreate(savedInstanceState);

         ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();

         if (getIntent().hasExtra("lista")) {

             listaClientes = (ArrayList<Cliente>) getIntent().getExtras()
                     .getSerializable("lista");
         }

         setListAdapter(new ArrayAdapter<Cliente>(this, R.layout.list_item,
                 listaClientes));

         ListView lv = getListView();
         lv.setTextFilterEnabled(true);

         lv.setOnItemClickListener(new OnItemClickListener() {
             public void onItemClick(AdapterView<?> parent, View view,
                     int position, long id) {
                 // When clicked, show a toast with the TextView text
                 Toast.makeText(getApplicationContext(),
                         ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
             }
         });

        }
}
 


Não quero um retorno assim :

br.com.ExConsumirWs.Cliente@4059f688 --> 1 registro
br.com.ExConsumirWS.Cliente@405a03a8 -->2 registro

Teria que vir os dados dos clientes .


Me ajuda ai por favor

Abração !!!


28 Mai 2012, 11:02
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 [+Java+JSON+Code]
O problema é que o ArrayAdapter vai usar o método "toString()" da sua classe cliente para montar a lista!!

Se vc não sobrescrever esse método lá na sua classe para retornar o que vc quer, é assim mesmo que será o resultado.

Faça o seguinte, sobrescreva o método "toString" na classe cliente retornando apenas o que vc quer.

Seria mais ou menos assim:


public String toString(){
return this.nome;
}
 


Assim quando vc der um toString no seu objeto cliente, terá como retorno o nome dele.

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 Mai 2012, 13:51
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Boa tarde Antunes estou com um problema nao consegui rodar este exemplo seu, apenas consegui o hello world!!! da a seguinte msg

Response:
status: 404 Not Found
Date: Thu, 31 May 2012 17:31:14 GMT
X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1 Java/Oracle Corporation/1.7)
Content-Length: 1053
Server: GlassFish Server Open Source Edition 3.1
Content-Type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head><title>GlassFish Server Open Source Edition 3.1 - Error report</title><style type="text/css"><!--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;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 404 - Not Found</h1><hr/><p><b>type</b> Status report</p><p><b>message</b>Not Found</p><p><b>description</b>The requested resource (Not Found) is not available.</p><hr/><h3>GlassFish Server Open Source Edition 3.1</h3></body></html>


31 Mai 2012, 16: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 [+Java+JSON+Code]
Rapaz,

Essa mensagem pode ser muita coisa. Consegue detalhar mais o que vc fez??

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 Mai 2012, 19:21
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes, fiz exatamente o que voce esta ensinando, apenas estou usando glassfish, mas o helloworld funcionou perfeito, entao acho que problema do server nao e!!!
baixei as bilbiotecas igual voce falou, apenas na hora de executar que esta dando essa msg no POSTER do chrome, se eu executar no proprio navegador do eclipse da a seguinte mensagem!

esta mensagem quando executo cliente/buscartodos
HTTP Status 404 - Not Found

--------------------------------------------------------------------------------

type Status report

messageNot Found

descriptionThe requested resource (Not Found) is not available.

--------------------------------------------------------------------------------

GlassFish Server Open Source Edition 3.1

esta mensagem quando executo cliente/inserir
HTTP Status 405 - Method Not Allowed

--------------------------------------------------------------------------------

type Status report

messageMethod Not Allowed

descriptionThe specified HTTP method is not allowed for the requested resource (Method Not Allowed).

--------------------------------------------------------------------------------

GlassFish Server Open Source Edition 3.1

mas fiz tudo igual vc falou!!!


31 Mai 2012, 20: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 [+Java+JSON+Code]
Vc setou o "content-type" da sua requisição como "application/json"??

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??


01 Jun 2012, 00:14
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Hum quase certeza que nao, desculpa mas pode me ensinar com mudar?


01 Jun 2012, 01:23
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 [+Java+JSON+Code]
No poster tem um campo chamado "Content Type" na aba "Content to Send", basta colocar "application/json" ali!!

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??


01 Jun 2012, 02:04
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes, nao entendi onde que se encontra esse content type pois no POSTER do chrome nao tem essa opcao, apenas tem um campo que chama content body, poderia me ajudar estou precisando muito desse exemplo rode aki!!!

Abraco


02 Jun 2012, 02: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 [+Java+JSON+Code]
Rapaz,

Tenta usar o do firefox, que é o que eu costumo usar!

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??


02 Jun 2012, 02:45
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes,

Baixei instalei tudo certin o firefox e o poster, agora tem a opcao content type, coloquei tudo que vc disse! mas ocorre a mesma msg! lembrando que fiz tudo como disse esta tudo igual vc fez no exemplo!!!
O que pode ser?


02 Jun 2012, 15:54
Perfil
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes andei prestando atencao aki e e assim quando vc insere "application/json" no content type ae tudo certo, mas quando vc clica em get ou post, ele abre uma tela com o response ne? so que no response nessa tela que abre, aparece os dados como nome do servidor e tals ne e tbm aparece o content type ne? so que nesse content type nao aparece "application/json" aparece text/html


02 Jun 2012, 16:05
Perfil
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful [+Java+JSON+Code]
Antunes,

Ja esta resolvido consegui achar o erro aki!!
mas tenho outra duvida, nao consegui entender como inserir um novo cliente, pode me explicar???


02 Jun 2012, 16:13
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 [+Java+JSON+Code]
Se achou a solução, compartilhe-a com os usuários do fórum. O seu problema pode ser o de outra pessoa tbm.

O que exatamente vc não entendeu sobre como inserir um novo cliente??

Chegou a ver esse exemplo com banco de dados??

viewtopic.php?f=7&t=17638

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??


02 Jun 2012, 16:29
Perfil WWW
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 160 Mensagens ]  Ir para a página 1, 2, 3, 4  Próximo

Quem está online

Usuários vendo este fórum: Abraao, adilson, albinoneto, anaguerra, andreluiz, attomweb, betofigu, BiG_SerGiO, Biggs Darklighter, BrunoO, BTalhadas, C-3PO, car.demarco, Carlos Almeida, carlos.macleod, celson, cenatech, china, christian, CKorneLL, cleber, Danilo Dias, dchechetto, denisfln, developermaster, dfreitas, Diego Rufino, Douglas Siviotti, edlinux, fabielp, Felipe, Felipe Ferreira, ffabiano, Flavio, flaviohssantos, FVB, garretereis, glmsistemas, Google Desktop, hellbest, henrique.garcia, igor_meneguzzo, inaciofernandes, italoraony, jacksonvpj, jandersonjc, JAndroid, jaydson, jcorreajr, Jenius, jgfelix, jhhm_2008, jlucasps, joaquimfoto, Julio Assis, Juniorvs, klassmann, Knut, Kureiton, lalaine, lanlan, Lelinho, Leonardo, linukiss, lkunta, luizcesar, Machado000, Maiquell, MarceloLuz, Marini, martins, mauriciobreide, Maxtremus, mayahaslinger, mrkensley, NeruLL, Newton Barbosa, nina.rm, nivaldo, nsansilva, Padawan, pchofard, pemam.com.br, pgsnit, phpower1, pilon, pyrobit, r.wil, rafsantos, raulcca, rbenatti, regisjj, renan.fernandes, renanpl, ricardzanella, robsonoracle, rodrigo_corinthians, ROGÉRIO RODRIGUES, Rubens Prates, SEO Crawler, siker C3PO, SirBagda, slackware, taluna, talves, tchou, thiago@xbrain.com.br, Tognoli, W3 [Sitesearch], wil, Yuri e 1 visitante


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:
cron

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi