Ver mensagens sem resposta | Ver tópicos ativos Hoje é 13 Nov 2019, 13:52



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

Agora que já aprendemos como criar o nosso WS em Java, vamos para o segundo passo, que é como consumir no Android.

[Artigo] Web Service RESTful [+Java+JSON+Code]

Como consumir um Web Service pelo Android

Não vou entrar em detalhes de como cria um projeto Android pois já sabemos como fazer isso, e se não soubermos, o que não falta é tutorial aqui no fórum explicando sobre o assunto.

Premissas:

* Ter instalado o SDK Android, AVD e o Eclipse (pode ser qualquer versão, mas de preferência a última);
* Ter o ambiente configurado, com pelo menos o Hello World Android rodando;
* Para esse projeto foi usada a API Google 2.1, Level 7 (como o projeto não tem ligação direta com a API, pode ser qualquer API que deve funcionar).

Com o nosso projeto criado, que chamei de ExConsumirWS, podemos ir direto ao código. Antes de entrar em activities e layouts, que não é o foco desse artigo, vamos começar pelo nosso WS cliente. Esse, ficará responsável pelo envio e recebimento das mensagens HTTP, ou seja, será a porta de entrada e saída da nossa aplicação para comunicação com o Web Service.

Não podemos esquecer de importar a API google-gson para esse projeto também, que serve para converter objetos java em JSON e vice-versa. Para adicionar bibliotecas ao seu projeto android, basta criar o diretório "libs" na raiz do seu projeto e colocar os JARs dentro dela.

Primeiro de tudo vamos precisar ter, exatamente, a mesma entidade (bean) que usamos no WS, já que nossa api (Jersey e GSON) usam essa estrutura para gerar o JSON e vice-versa, voltar ao objeto. Para isso, criei a classe Cliente dentro do pacote “br.com.exemplo.model”. Na verdade eu apenas copiei do projeto do WS e colei dentro desse diretório, pelo Eclipse mesmo, retirando a tag “@XmlRootElement” que não vamos precisar dela nesse projeto.


package br.com.droid.model;

import java.io.Serializable;

public class Cliente implements Serializable {

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

// getters e setters    
}
 



Dica: Esse pacote model, seria ideal se fosse um .jar, gerado de um terceiro projeto, que você importaria nos dois projetos, assim, garantindo que os seus objetos sejam exatamente iguais.

Tenho certeza que vocês repararam no “implements Serializable” na classe “Cliente”, mas comentarei sobre isso mais adiante.

Para o nosso WS cliente, precisaremos de um objeto "HttpClient" sendo chamado em cada transação com o WS, logo, para não perder o controle de quantos estão em memória, criei um singletom para garantir apenas uma instância.


package br.com.exemplo.webservice;

import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;

public class HttpClientSingleton {
   
    private static final int JSON_CONNECTION_TIMEOUT = 3000;
    private static final int JSON_SOCKET_TIMEOUT = 5000;
    private static HttpClientSingleton instance;
    private HttpParams httpParameters ;
    private DefaultHttpClient httpclient;
   
    private void setTimeOut(HttpParams params){
     HttpConnectionParams.setConnectionTimeout(params, JSON_CONNECTION_TIMEOUT);
     HttpConnectionParams.setSoTimeout(params, JSON_SOCKET_TIMEOUT);
    }
   
    private HttpClientSingleton() {
     httpParameters = new BasicHttpParams();
     setTimeOut(httpParameters);
     httpclient = new DefaultHttpClient(httpParameters);
    }
   
    public static DefaultHttpClient getHttpClientInstace(){
     if(instance==null)
         instance = new HttpClientSingleton();
     return instance.httpclient;
    }
}
 


Depois disso, vamos criar efetivamente a classe WebServiceCliente, que ficará responsável pelos “GET’s”, “POST’s”, “PUT’s” e “DELETE’s”, e será nossa interface com o WS. Ele pode ser único para a sua aplicação, já que raramente esses métodos serão diferentes, então não faz sentido ter um para cada objeto (Cliente, Pedido, Item de Pedido e etc).

Nessa classe, eu implementei apenas o GET e o POST, mas vocês podes especializar, criando o PUT, para atualização de um registro, e o DELETE, para apagar um registro. O que mudaria é que teríamos 4 métodos nessa classe, um para cada um desses.

Reparem que usamos o objeto “HttpGet” para o GET e o “HttpPost” para o POST, se vocês forem utilizar os outros métodos, usem o “HttpDelete” para o DELETE e o “HttpPut” para o PUT.

Atenção: Se decidirem usar esses métodos, não se esqueçam de colocar as anotações “@DELETE” e “@PUT” nos métodos correspondentes lá no Web Service. Senão você vai dar um DELETE em um método GET e não vai funcionar. Lembrem-se que esses métodos correspondem aos métodos do protocolo HTTP.


package br.com.exemplo.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 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());
    }
}
 


Levamos sempre em conta o grau de responsabilidade de uma classe. Ela nunca deve ter muitas funções ou fazer mais do que o necessário, nem ser muito grande, assim as boas práticas recomendam. Por isso essa quantidade de classes, que vocês devem estar se perguntando - Por que esse cara cria tanta classe?? - Agora está respondido.

Agora vem a classe que vai fazer o meio de campo entre o nosso “WebServiceCliente” e a Activity.


package br.com.exemplo.webservice;

import java.util.ArrayList;
import java.util.List;
import br.com.exemplo.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://10.0.2.2: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];
    }
}
 


Primeira observação dessa classe é em relação a essa linha, que está comentada:

String[] resposta = new WebServiceCliente().get(URL_WS + "buscarTodos");


O que acontece com ela é o seguinte. Lembra os métodos que devolvem uma lista lá na classe “ClienteResource no nosso WS??

Para refrescar a memória:



@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());
    }

 


Lá eu falei que entenderiamos isso aqui nesse artigo. O que acontece é que a forma com que o Jersey transforma uma lista (List) em JSON é diferente da forma com que o GSON faz isso. Então, por esse motivo que usamos o GSON no WS, para que a gente consiga receber essa lista aqui no Android.

Deixei esses cometários e o método no WS para que vocês testem e vejam com os seus próprios olhos.

Oportunidade de estudo para vocês: Achar uma forma de enviar uma lista, para que não presise usar o GSON no WS. Eu não achei, mas eu não tinha muito tempo para perder com isso e como a lib GSON é tão peguena, nem me preocupei mais.

Outra coisa interessante que usei nesse método foi o “Exception” a meu favor. Ele vai devolver a mensagem de erro que vem do WS e lá na Activity, com o uso do try/catch, pego essa mensagem e jogo no Toast.

Agora voltando ao nosso projeto, vamos colocar isso tudo pra funcionar e ver o resultados em activities.

Falando em Android, a informação mais importante que precisamos saber é sobre permissão. Para consumo de WS, precisamos apenas da permissão para INTERNET. Sabendo disso, olhem como ficou o meu manifest.


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="br.com.exemplo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <activity
            android:name=".activity.ExConsumirWSActivity"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".activity.ListaClientes">

        </activity>
    </application>

</manifest>
 


Dica: As permissões sempre devem vir antes da tag “application”.

Chegamos nas Activities. Já aproveito pra avisar que me reservei o direito de não fazer um monte de Activities e facilitar a minha vida.


package br.com.exemplo.activity;

import java.util.ArrayList;
import br.com.exemplo.R;
import br.com.exemplo.model.Cliente;
import br.com.exemplo.webservice.ClienteREST;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class ExConsumirWSActivity extends Activity {

    private String id;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     final EditText idEdt = (EditText) findViewById(R.id.editTextIdCliente);
     final TextView txtView = (TextView) findViewById(R.id.textView1);
     Button buscarIdBtn = (Button) findViewById(R.id.buttonBuscarPorId);
     Button buscarTodosBtn = (Button) findViewById(R.id.buttonBuscarTodos);
     Button deletarBtn = (Button) findViewById(R.id.buttonDeletarCliente);
     Button inserirBtn = (Button) findViewById(R.id.buttonInserirCliente);

     buscarIdBtn.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View v) {
             id = idEdt.getText().toString();
             ClienteREST cliREST = new ClienteREST();
             try {
                 Cliente cliente = cliREST.getCliente(Integer.parseInt(id));
                 txtView.setText(cliente.toString());
             } catch (NumberFormatException e) {
                 e.printStackTrace();
                 gerarToast("Digite um ID válido!");
             } catch (Exception e) {
                 e.printStackTrace();
                 gerarToast(e.getMessage());
             }
         }
     });

     buscarTodosBtn.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View v) {
             ClienteREST cliREST = new ClienteREST();
             try {
                 ArrayList<Cliente> listaCliente = (ArrayList<Cliente>) cliREST.getListaCliente();
                 Intent i = new Intent(getApplicationContext(), ListaClientes.class);
                 i.putExtra("lista", listaCliente);
                 startActivity(i);
             } catch (Exception e) {
                 e.printStackTrace();
                 gerarToast(e.getMessage());
             }

         }
     });

     deletarBtn.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View v) {
             id = idEdt.getText().toString();
             ClienteREST cliREST = new ClienteREST();
             try {
                 String resposta = cliREST.deletarCliente(Integer.parseInt(id));
                 txtView.setText(resposta);
             } catch (NumberFormatException e) {
                 e.printStackTrace();
                 gerarToast("Digite um ID válido!");
             } catch (Exception e) {
                 e.printStackTrace();
                 gerarToast(e.getMessage());
             }

         }
     });

     inserirBtn.setOnClickListener(new View.OnClickListener() {

         @Override
         public void onClick(View v) {
             Cliente cliente = new Cliente();
             cliente.setNome("João da Silva");
             cliente.setCpf("000333444-01");
             cliente.setEndereco("Rua do lado, 33");
             //não coloquei o ID, pq isso é papel do banco, com um auto increment.
             ClienteREST cliREST = new ClienteREST();
             try {
                 String resposta = cliREST.inserirCliente(cliente);
                 txtView.setText(resposta);
             } catch (Exception e) {
                 e.printStackTrace();
                 gerarToast(e.getMessage());
             }
         }
     });
    }

    private void gerarToast(CharSequence message) {
     int duration = Toast.LENGTH_LONG;
     Toast toast = Toast
             .makeText(getApplicationContext(), message, duration);
     toast.show();
    }
}
 


Pego a mensagem da exceção com o “getMessage()” e jogo no Toast. Simples, né??

Agora a lista de clientes. Aqui está a explicação do “Serializable” lá na classe Cliente. Preciso que seja um objeto serializável para passar de uma activity para a outra usando o “putExtra()”, apenas isso.


package br.com.exemplo.activity;

import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import br.com.exemplo.R;
import br.com.exemplo.model.Cliente;

public class ListaClientes extends ListActivity {

    @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();
         }
     });

    }
}
 


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.

A tarefa é simples, apenas precisaremos mudar a nossa camada que trata os objetos antes de enviá-los ao WS, começando pelo ClienteRest.

Nele eu adicionei apenas esse método, que vai receber a lista de clientes, converter para JSON e enviar, junto com a URL, para o WebServiceCliente, que não foi alterado.


public String inserirListaClientes(ArrayList<Cliente> listaClientes) throws Exception {
    Gson gson = new Gson();
    String clienteJSON = gson.toJson(listaClientes);
    String[] resposta = new WebServiceCliente().post(URL_WS + "inserirLista", clienteJSON);
    if (resposta[0].equals("200")) {
        return resposta[1];
    } else {
        throw new Exception(resposta[1]);
    }
}
 


Na minha Activity ExConsumirWSActivity, criei um novo botão para criar a lista de clientes e passá-la adiante para a classe que trata com o WS.


Button inserirListaBtn = (Button) findViewById(R.id.buttonInserirListaClientes);
inserirListaBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
        Cliente cliente1 = new Cliente();
        cliente1.setNome("João da Silva");
        cliente1.setCpf("000333444-01");
        cliente1.setEndereco("Rua do lado, 33");
        listaClientes.add(cliente1);
       
        Cliente cliente2 = new Cliente();
        cliente2.setNome("Marcos Ribeiro");
        cliente2.setCpf("777777777-99");
        cliente2.setEndereco("Rua de cima, 340");
        listaClientes.add(cliente2);
       
        Cliente cliente3 = new Cliente();
        cliente3.setNome("Zezinho do posto");
        cliente3.setCpf("999999999-22");
        cliente3.setEndereco("Rua de baixo, 66");
        listaClientes.add(cliente3);
       
        //não coloquei o ID, pq isso é papel do banco, com um auto increment.
        ClienteREST cliREST = new ClienteREST();
        try {
            String resposta = cliREST.inserirListaClientes(listaClientes);
            txtView.setText(resposta);
        } catch (Exception e) {
            e.printStackTrace();
            gerarToast(e.getMessage());
        }
    }
});
 


Bom, é isso!! Simples, rápido e muito fácil!! /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.


Confiram o artigo anterior sobre como criar o WS:

[Artigo] Web Service RESTful [+Java+JSON+Code]

Não percam o próximo Artigo:

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


10 Fev 2012, 01:09
Perfil WWW
Anatomy of an App
Anatomy of an App
Avatar de usuário

Data de registro: 12 Jan 2008, 22:16
Mensagens: 119
Mensagem Re: [Artigo] Web Service RESTful 2 [Consumir+Android]
mais um excelente artigo antunes, mais me ajudar um monte. Muito obrigado!!


10 Fev 2012, 13:02
Perfil
What is DDMS?
What is DDMS?

Data de registro: 30 Ago 2010, 18:00
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Parabéns pelo artigo Antunes. Excelente mesmo.

_________________
APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade.


10 Fev 2012, 17:36
Perfil
What is Android?
What is Android?

Data de registro: 22 Ago 2011, 00:02
Mensagens: 6
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Valeu cara!!


15 Fev 2012, 00:05
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 2 [+Consumir+Android+Code]
parabens está me ajudando muito...!!!


01 Mar 2012, 17:37
Perfil
Hello World!
Hello World!

Data de registro: 08 Out 2011, 22:05
Mensagens: 20
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Antunes

fiz conforme voce ensina no tutorial mas na minha maquina não esta funcionario..

O Android nao consegue abrir a URL do java. Eu nao instalei o Tomcat não, apenas adicionei o TomCat no eclipse e dou um start no tomcat toda vez que rodo o projeto java.

No java esta tudo legal, mas android nao..

sabe o que pode ser?

Att.,

Rodrigo Marques


01 Mar 2012, 19: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 2 [+Consumir+Android+Code]
marquesrodrigo escreveu:
Antunes

fiz conforme voce ensina no tutorial mas na minha maquina não esta funcionario..

O Android nao consegue abrir a URL do java. Eu nao instalei o Tomcat não, apenas adicionei o TomCat no eclipse e dou um start no tomcat toda vez que rodo o projeto java.

No java esta tudo legal, mas android nao..

sabe o que pode ser?

Att.,

Rodrigo Marques


Vc consegue consumir o seu WS usando o poster??

Como vc está tentando acessar a URL pelo android?? Posta ela aqui!!

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

Data de registro: 01 Mar 2012, 19:02
Mensagens: 6
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Olá Antunes, muito bom o seu tutorial! Me ajudou bastante

Mas ainda estou com problemas no layout da classe ListaClientes. Teria como vc disponibilizar esse arquivo (R.layout.list_item) pois estou tentando adivinhar o que tem nesse xml a partir do código-fonte da Classe ListaClientes e não estou obtendo êxito. Fico muito grato se vc puder ajudar.

Abraços


01 Mar 2012, 23:49
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 2 [+Consumir+Android+Code]
franckini escreveu:
Olá Antunes, muito bom o seu tutorial! Me ajudou bastante

Mas ainda estou com problemas no layout da classe ListaClientes. Teria como vc disponibilizar esse arquivo (R.layout.list_item) pois estou tentando adivinhar o que tem nesse xml a partir do código-fonte da Classe ListaClientes e não estou obtendo êxito. Fico muito grato se vc puder ajudar.

Abraços


franckini,

Muito obrigado!!

Agora vamos ao seu problema.

Esse arquivo está dentro do projeto, que está em anexo no tópico. Vc pode baixar e conferir tudo que eu fiz!!

De qualquer forma, o conteúdo do xml é esse aqui:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >

</TextView>


Apenas um TextView!!!

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, 01:49
Perfil WWW
What is a Activity?
What is a Activity?

Data de registro: 19 Fev 2012, 23:39
Mensagens: 15
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
sera que alguem consegue me ajudar, ao clicar em qualquer um dos botoes no emulador me aparece falha na rede. segue o logcat:

03-27 23:45:34.537: E/NGVL(304): Falha ao acessar Web service
03-27 23:45:34.537: E/NGVL(304): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8080 refused
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:133)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
03-27 23:45:34.537: E/NGVL(304): at br.com.exemplo.webservice.WebServiceCliente.get(WebServiceCliente.java:26)
03-27 23:45:34.537: E/NGVL(304): at br.com.exemplo.webservice.ClienteREST.getListaCliente(ClienteREST.java:33)
03-27 23:45:34.537: E/NGVL(304): at br.com.exemplo.activity.ExConsumirWSActivity$2.onClick(ExConsumirWSActivity.java:59)
03-27 23:45:34.537: E/NGVL(304): at android.view.View.performClick(View.java:2364)
03-27 23:45:34.537: E/NGVL(304): at android.view.View.onTouchEvent(View.java:4179)
03-27 23:45:34.537: E/NGVL(304): at android.widget.TextView.onTouchEvent(TextView.java:6541)
03-27 23:45:34.537: E/NGVL(304): at android.view.View.dispatchTouchEvent(View.java:3709)
03-27 23:45:34.537: E/NGVL(304): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-27 23:45:34.537: E/NGVL(304): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-27 23:45:34.537: E/NGVL(304): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-27 23:45:34.537: E/NGVL(304): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
03-27 23:45:34.537: E/NGVL(304): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
03-27 23:45:34.537: E/NGVL(304): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
03-27 23:45:34.537: E/NGVL(304): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
03-27 23:45:34.537: E/NGVL(304): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
03-27 23:45:34.537: E/NGVL(304): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
03-27 23:45:34.537: E/NGVL(304): at android.os.Handler.dispatchMessage(Handler.java:99)
03-27 23:45:34.537: E/NGVL(304): at android.os.Looper.loop(Looper.java:123)
03-27 23:45:34.537: E/NGVL(304): at android.app.ActivityThread.main(ActivityThread.java:4363)
03-27 23:45:34.537: E/NGVL(304): at java.lang.reflect.Method.invokeNative(Native Method)
03-27 23:45:34.537: E/NGVL(304): at java.lang.reflect.Method.invoke(Method.java:521)
03-27 23:45:34.537: E/NGVL(304): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-27 23:45:34.537: E/NGVL(304): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-27 23:45:34.537: E/NGVL(304): at dalvik.system.NativeStart.main(Native Method)
03-27 23:45:34.537: E/NGVL(304): Caused by: java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused
03-27 23:45:34.537: E/NGVL(304): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:255)
03-27 23:45:34.537: E/NGVL(304): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:535)
03-27 23:45:34.537: E/NGVL(304): at java.net.Socket.connect(Socket.java:1054)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117)
03-27 23:45:34.537: E/NGVL(304): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129)
03-27 23:45:34.537: E/NGVL(304): ... 30 more


27 Mar 2012, 22:46
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 2 [+Consumir+Android+Code]
O erro é esse aqui!!!

03-27 23:45:34.537: E/NGVL(304): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8080 refused

Não existe o nome localhost para o emulador, ele não sabe traduzir.

Vc deve usar o mesmo ip que eu usei, que é o ip que o emulador entende como o ip do seu pc!!

http://10.0.2.2:8080

O 10.0.2.1 é o ip do seu emulador!!

Testa ae que vai funcionar!!

Qualquer dúvida é só ler a documentação!!

http://developer.android.com/guide/deve ... networking

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 Mar 2012, 03:27
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
java.lang.NoClassDefFoundError: com.google.gson.Gson

no meu deu esse erro... vc saberia oq aconteceu... estou consumindo em um site feito em PHP.... os dados qndo faço o debug estao vindo pra min...

desde ja Agradeço..


05 Abr 2012, 18:39
Perfil
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 2 [+Consumir+Android+Code]
Marcos_Junior escreveu:
java.lang.NoClassDefFoundError: com.google.gson.Gson

no meu deu esse erro... vc saberia oq aconteceu... estou consumindo em um site feito em PHP.... os dados qndo faço o debug estao vindo pra min...

desde ja Agradeço..

antunes escreveu:
...Não podemos esquecer de importar a API google-gson ...

_________________
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...


05 Abr 2012, 23:54
Perfil ICQ WWW
What is a Activity?
What is a Activity?

Data de registro: 19 Fev 2012, 23:39
Mensagens: 15
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
como faço para fazer um get passando um parametro? minha classe webservice esta igual a sua


06 Abr 2012, 17:49
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 2 [+Consumir+Android+Code]
andremorgado escreveu:
como faço para fazer um get passando um parametro? minha classe webservice esta igual a sua


O parâmetro será passado pela url!!


    private static final String URL_WS = "http://10.0.2.2:8080/WebServiceREST/cliente/";

    public Cliente getCliente(int id) throws Exception {

     String[] resposta = new WebServiceCliente().get(URL_WS + id); // olha o id aqui, sendo concatenado na url
   
     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]);
     }
    }
 


Pode reparar que nesse trecho de código eu passo o id do cliente pela url!!

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


06 Abr 2012, 21:39
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
A api esta importada tanto para o projeto com os jar's e dentro da classe


09 Abr 2012, 10:14
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 2 [+Consumir+Android+Code]
Marcos_Junior escreveu:
A api esta importada tanto para o projeto com os jar's e dentro da classe


Posta o seu código, mas acho que vc está passando uma classe que não existe para o GSON.

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 Abr 2012, 12:42
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
O codigo seria o mesmo que esta no tutorial...

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


09 Abr 2012, 12:46
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 2 [+Consumir+Android+Code]
Mas vc tem a classe cliente no seu projeto??

Essa foi montada pensando nos atributos que são retornados do seu WS, em 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??


09 Abr 2012, 12:59
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Sim tenho a classe cliente com apenas dois atributos Id e nome.. so para teste...


09 Abr 2012, 13:00
Perfil
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Antunes Obrigado pela atenção... descobri o porque do erro!
O problema é que .jars externos não são colocados na pasta 'libs' por padrão ao usar Propriedades - Java Build Path-Adicionar JAR externo, e mesmos eu criando a pasta "lib" o android nao o reconhece.. pra ser reconhecido tem q ser "libs" entao automaticamente o jar cai direto no Android dependencies...
Obs: errinho besta...


09 Abr 2012, 13:11
Perfil
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Bom dia...

o meu codigo deu o seguinte erro
javax.net.ssl.SSLException: not trusted server certificate exception

dando falha de rede... alguem saberia oq e esse problema...


10 Abr 2012, 11:17
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 2 [+Consumir+Android+Code]
Pode ser algum problema na sua URL, na hora de gerar a URI!!

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


10 Abr 2012, 13:59
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Boa tarde.... estou usando uma url https...


10 Abr 2012, 16:24
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 2 [+Consumir+Android+Code]
Aí está o problema, o meu exemplo não contempla o uso de https.

Vc configurou o seu servidor de aplicação para tal função?? Instalou as libs SSL no servidor??

Talvez a implementação do seu client (android) tenha que ser diferente.

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


10 Abr 2012, 16:47
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Sim sim...
http://www.jjocenio.com/2011/03/conexao ... coes-java/
axei esse link q fala a respeito e estou fazendo o teste pra ver...


10 Abr 2012, 16: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 2 [+Consumir+Android+Code]
Procurou saber se funciona com o android??

Testou seu WS com o poster ou de alguma outra forma?

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


10 Abr 2012, 17:59
Perfil WWW
What is DDMS?
What is DDMS?

Data de registro: 05 Abr 2012, 12:48
Mensagens: 34
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Opa... boas deu tudo certo aqui.... mais precisei de um código a mais pra faze funcionar segue os dois link, caso alguém precise da mesma solução:
http://www.jjocenio.com/2011/03/conexao-ssl-em-aplicacoes-java/
http://www.guj.com.br/java/12665-connecar-uma-url-via-https-com-autenticcao-em-proxy-de-saida

usei também o keyStore Explorer 4.1 pra obter o certificado mais fácil...


11 Abr 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 2 [+Consumir+Android+Code]
Maravilha!! Muito obrigado pela contribuição!!

Depois farei uma extensão desses artigos usando autenticação e criptografia!!

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


11 Abr 2012, 14:16
Perfil WWW
What is Android?
What is Android?

Data de registro: 19 Mai 2012, 23:56
Mensagens: 5
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Opa, alguém pode me dar uma sugestão?

Seguinte, tenho um webservice em .Net, preciso consumir na aplicação android uma lista de objetos, que por sua vez possuem 4 atributos. Preciso também salvar no android um mesmo objeto com seus respectivos atributos para posteriormente enviar para um webservice em .Net.
A dúvida seria, qual é o mais apropriado, usar ksoap2-android ou algo com rest? Caso seja com rest, o que seria por exemplo? gson?


20 Mai 2012, 00: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 2 [+Consumir+Android+Code]
Rapaz,

Vc está misturando tudo. Não confunda o padrão do WS com a tecnologia ou linguagem que está usando e não confunda gson com JSON!! GSON é uma api para mapear os seus objetos em JSON.

Outra coisa importante é que o cliente sempre depende do servidor, ou seja, se o seu WS for REST, o seu cliente terá que saber se comunicar com ele, sendo assim, a mesma preocupação serve para o ksoap.

A linguagem que vc usa para codificar pouco importa, já que a forma de se fazer vai ser sempre a mesma. REST sempre é o mais recomendado quando estamos falando de comunicação com Android.

Dê uma lida nesse artigo que vai te ajudar a entender.

viewtopic.php?f=7&t=17389

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

Data de registro: 19 Mai 2012, 23:56
Mensagens: 5
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Antunes, obrigado pela consideração.
Não misturei, acho que me expressei errado. gson eu sei que é uma api para mapeamento Json. Perguntei porque para consumir no android os dados do webservice com ksoap2-android uma array de objetos não era possível, até onde vi, por isto perguntei. Mas sua sugestão de rest foi muito boa. Vou utiliza-la no lugar do plugin ksoap2-android.

[]´s


20 Mai 2012, 17:08
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 2 [+Consumir+Android+Code]
Fala Pessoal blz ?

Antunes vlw pela dica hein

Porém estou com um probleminha nao estou conseguindo retornar o json na lista, ele esta retornar um negocio estranho
--> br.com.ExConsumirWS.Cliente@405772e0.

Cada registro que eu tenho cadastrado ele retorno algo tipo esse.

Pode ser o parse de esta dando problema, o estranho é que nao aparece nada no logcat.

Se puder ajudar !!!!

Abraços.

obs: muito bacana o app Guia Carioca Parabéns !!!


25 Mai 2012, 18:31
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 2 [+Consumir+Android+Code]
Valeu, muito obrigado!! =D

Posta o seu JSON!! Dá um "sysout" na String com o JSON que vem do WS!!

Outra coisa legal de fazer é usar o Poster para testar o seu WS. Ele é um plugin para o chrome e firefox!!

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:16
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 2 [+Consumir+Android+Code]
Esta aqui :

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


Nesse método ele esta vindo mas esta vindo tudo na mesma posicao do array:

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;
        }


Porém estou com um probleminha nao estou conseguindo retornar o json na lista, ele esta retornar um negocio estranho
--> br.com.ExConsumirWS.Cliente@405772e0.

Fico no aguardo abraços !!!!


28 Mai 2012, 11: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 2 [+Consumir+Android+Code]
Adriano,

Sua dúvida foi respondida no outro tópico. Por favor, poste sua dúvida em apenas um dos tópicos, pra facilitar a nossa vida. =D

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:54
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 2 [+Consumir+Android+Code]
Vlw Antunes Perfeito, e desculpa por replicar a duvida , deu um erro aqui p/ mim, nao conseguia visualizar a minha duvida, quando
ia em Ver suas mensagens, será que esta com problema, testa ai pessoal pq 2 pessoas ja falaram do mesmo erro aqui p/ mim !!!


Abraços !!!


28 Mai 2012, 16:46
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 2 [+Consumir+Android+Code]
É que todos os posts dentro dessa parte de Artigos, Tutoriais e Dicas passam por aprovação dos Administradores do fórum. Por isso que não aparece logo que vc posta.

Que bom que resolveu seu problema.

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

Data de registro: 29 Mai 2012, 18:31
Mensagens: 1
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Poxa, aqui está dando erro na hora de imprimir o getListaCliente..
também está voltando código do tipo br.com.ExConsumirWS.Cliente@405772e0.
a solução que achei aqui no forum foi mudar o método toString, colocando para retornar o nome, porém gostaria de retornar todos os dados do cliente..
será que tem como?

Desde já, grato..
Abraços


01 Jun 2012, 14:43
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 2 [+Consumir+Android+Code]
Sim, fui eu mesmo quem te deu essa sugestão.

Se explicar melhor ficaria mais fácil, mas o que vc pode fazer é no retorno do método "toString" concatenar todos os dados que vc quer devolver.

Por exemplo:


public class Cliente implements Serializable {

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

   @Override
   public String toString() {
        return "Nome: " + this.nome + "\nCPF: " + this.cpf + "\nEndereço: " + this.endereco;
   }

// getters e setters    
}
 


Assim vc tem todas as informações com o "\n" como quebra de linha.

A outra saída é vc criar um "adapter" customizado recebendo uma lista de objetos e lá dentro setar como quiser em cada linha do seu ListView, por exemplo.

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, 21:31
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Antunes td bem?
implementei igual vc ensinou,
estou rodando direto no celular atraves de um roteador, esta acontecendo o seguinte quando tento buscar por id


06-07 18:50:17.941: W/System.err(15910): java.lang.NumberFormatException: unable to parse '' as integer
06-07 18:50:17.945: W/System.err(15910): at java.lang.Integer.parseInt(Integer.java:362)
06-07 18:50:17.945: W/System.err(15910): at java.lang.Integer.parseInt(Integer.java:332)
06-07 18:50:17.945: W/System.err(15910): at br.com.exemplo.activity.ExConsumirWSActivity$1.onClick(ExConsumirWSActivity.java:40)
06-07 18:50:17.949: W/System.err(15910): at android.view.View.performClick(View.java:2538)
06-07 18:50:17.949: W/System.err(15910): at android.view.View$PerformClick.run(View.java:9152)
06-07 18:50:17.953: W/System.err(15910): at android.os.Handler.handleCallback(Handler.java:587)
06-07 18:50:17.957: W/System.err(15910): at android.os.Handler.dispatchMessage(Handler.java:92)
06-07 18:50:17.957: W/System.err(15910): at android.os.Looper.loop(Looper.java:123)
06-07 18:50:17.960: W/System.err(15910): at android.app.ActivityThread.main(ActivityThread.java:3687)
06-07 18:50:17.960: W/System.err(15910): at java.lang.reflect.Method.invokeNative(Native Method)
06-07 18:50:17.960: W/System.err(15910): at java.lang.reflect.Method.invoke(Method.java:507)
06-07 18:50:17.960: W/System.err(15910): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
06-07 18:50:17.960: W/System.err(15910): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-07 18:50:17.964: W/System.err(15910): at dalvik.system.NativeStart.main(Native Method)
06-07 18:50:25.019: E/NGVL(15910): Falha ao acessar Web service
06-07 18:50:25.019: E/NGVL(15910): org.apache.http.conn.ConnectTimeoutException: Connect to /192.168.1.10:8080 timed out
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:156)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-07 18:50:25.019: E/NGVL(15910): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
06-07 18:50:25.019: E/NGVL(15910): at br.com.exemplo.webservice.WebServiceCliente.get(WebServiceCliente.java:24)
06-07 18:50:25.019: E/NGVL(15910): at br.com.exemplo.webservice.ClienteREST.getCliente(ClienteREST.java:16)
06-07 18:50:25.019: E/NGVL(15910): at br.com.exemplo.activity.ExConsumirWSActivity$1.onClick(ExConsumirWSActivity.java:40)
06-07 18:50:25.019: E/NGVL(15910): at android.view.View.performClick(View.java:2538)
06-07 18:50:25.019: E/NGVL(15910): at android.view.View$PerformClick.run(View.java:9152)
06-07 18:50:25.019: E/NGVL(15910): at android.os.Handler.handleCallback(Handler.java:587)
06-07 18:50:25.019: E/NGVL(15910): at android.os.Handler.dispatchMessage(Handler.java:92)
06-07 18:50:25.019: E/NGVL(15910): at android.os.Looper.loop(Looper.java:123)
06-07 18:50:25.019: E/NGVL(15910): at android.app.ActivityThread.main(ActivityThread.java:3687)
06-07 18:50:25.019: E/NGVL(15910): at java.lang.reflect.Method.invokeNative(Native Method)
06-07 18:50:25.019: E/NGVL(15910): at java.lang.reflect.Method.invoke(Method.java:507)
06-07 18:50:25.019: E/NGVL(15910): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
06-07 18:50:25.019: E/NGVL(15910): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-07 18:50:25.019: E/NGVL(15910): at dalvik.system.NativeStart.main(Native Method)
06-07 18:50:25.023: W/System.err(15910): java.lang.Exception: Falha de rede!
06-07 18:50:25.023: W/System.err(15910): at br.com.exemplo.webservice.ClienteREST.getCliente(ClienteREST.java:23)
06-07 18:50:25.023: W/System.err(15910): at br.com.exemplo.activity.ExConsumirWSActivity$1.onClick(ExConsumirWSActivity.java:40)
06-07 18:50:25.027: W/System.err(15910): at android.view.View.performClick(View.java:2538)
06-07 18:50:25.027: W/System.err(15910): at android.view.View$PerformClick.run(View.java:9152)
06-07 18:50:25.031: W/System.err(15910): at android.os.Handler.handleCallback(Handler.java:587)
06-07 18:50:25.031: W/System.err(15910): at android.os.Handler.dispatchMessage(Handler.java:92)
06-07 18:50:25.031: W/System.err(15910): at android.os.Looper.loop(Looper.java:123)
06-07 18:50:25.039: W/System.err(15910): at android.app.ActivityThread.main(ActivityThread.java:3687)
06-07 18:50:25.039: W/System.err(15910): at java.lang.reflect.Method.invokeNative(Native Method)
06-07 18:50:25.039: W/System.err(15910): at java.lang.reflect.Method.invoke(Method.java:507)
06-07 18:50:25.039: W/System.err(15910): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
06-07 18:50:25.039: W/System.err(15910): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-07 18:50:25.039: W/System.err(15910): at dalvik.system.NativeStart.main(Native Method)


07 Jun 2012, 20:54
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 2 [+Consumir+Android+Code]
Rapaz,

Posta o seu código!!

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 Jun 2012, 00:28
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Meu codigo e apenas um ctrl + c e ctrl + v do seu codigo!


08 Jun 2012, 02: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 2 [+Consumir+Android+Code]
Tá.. então provavelmente apareceu na tela um toast com a frase "Digite um ID válido!", né??

Vc está rodando o WS no seu PC?? O segundo erro é que ele não conseguiu conectar no WS. Deve ter algum problema na estrutura que vc montou.

Pode explicar melhor como vc montou o seu ambiente de teste??

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 Jun 2012, 02:41
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Baixei seu projeto mais nao sei pq apareceu um monte de erro, entao criei um e copiei os arquivos do seu para o meu certo, entao nao tem diferenca entre o meu e o seu! agora, nao sei pq quando aperto buscar por id aparece falha na rede menos no inserir, quando aperto da erro e fecha o sistema! unica coisa que mudei foi o ip do meu que coloquei 192.168.1.10:8080 pois este e o ip da minha maquina


08 Jun 2012, 02: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 2 [+Consumir+Android+Code]
Tudo bem, mas o WS está rodando no seu PC também??

Se vc estiver rodando o projeto no emulador, poderia deixar o ip que eu coloquei.

Para esse exemplo funcionar, vc tem que executar 2 projetos, um que é o WS, que vai rodar no tomcat e esse que é android, que vai rodar no emulador. É isso que vc está fazendo??

Esse erro significa que o app android não achou o 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??


08 Jun 2012, 11:23
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Hoje de manha teste o web service, e ele so esta rodando o helloworld outros metodos como cliente/buscarTodos nao esta retornando nada, nao sei se vc lembra tive esse mesmo problema no comeco do desenvolvimento do web service que depois descobri que era o endereco q eu estava digitando errado! agora eu nao sei oq e!


08 Jun 2012, 12: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 2 [+Consumir+Android+Code]
Aparece algum erro quando vc executa o seu projeto 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??


08 Jun 2012, 14:14
Perfil WWW
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Nenhum igual eu te disse, o helloworld funciona perfeito, quando digito http://meuip:8080/WebServiceREST/cliente/buscarTodos e coloco "application/json" nao funciona


08 Jun 2012, 15:05
Perfil
Android application
Android application

Data de registro: 30 Mai 2012, 01:01
Mensagens: 78
Mensagem Re: [Artigo] Web Service RESTful 2 [+Consumir+Android+Code]
Antunes, necessito muito desse exemplo seu para meu tcc, mas esta dando esses problemas, nao tinha como vc me passar o seu projeto ae que esteja rodando perfeito? agradeceria muito se pudesse fazer isso, entao se tiver como mandar nesse email systemfunes@gmail.com ou systemfunes@hotmail.com , desde ja agradeco!!!!


08 Jun 2012, 17:39
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 271 Mensagens ]  Ir para a página 1, 2, 3, 4, 5, 6  Próximo

Quem está online

Usuários vendo este fórum: alansousa, Alex Marcelo Burnett, alexandrefett, alexandreufcg, alexsander.miranda, Alexsandro Tirloni, alfredo_ej, allart, andepunk, andreleitao, Augusto, austonrd, Avelino Mateus Neto, bbourbon, Berbert, Bitor, brunogh, buccalon, burujo, C-3PO, Carlos Almeida, carlos rodrigues, carminati, Carmizini, cassianotartari, cehills, cenatech, Chewbacca, christian, Christiane, cleber, Costa, craudiao, d.paim, dannieltec, dbuarque, diegorrborges, dnakamashi, DroidBot, eferrari, Eliezer Reis, emersonalencar, estratec, fabiano_eletro, fabielp, felipecomp19, FelipeOliveira, free_w3000, gabrielatme, gabrielpg, gutem25, henrikesilva1, ICCrawler - ICjobs, inaciofernandes, ismaelbpaiva, ismaels, jacard, jacksaum, Javanês, jcorreajr, jgfelix, jhhm_2008, joaquimfoto, jorgecardoso, jrchuteboxe, JRSIQUEIRA, juliana_costa, juliaojunior, Julio Assis, Juliobcosta, kecyobarros, kennedyximenes, Legiao, Lelinho, Leonardo333, LForce, Lindberg, lkunta, LordElfo, luciocamilo, Lúcio Zanette, madeinnordeste, maiconjunches, martins, masf_33, MauNunes, mauriciomag, Meticore, mmfsndroid, MSPRAFAEL, nakahara, Nice, nightwatch, nilsgome, nirvana, nishimura.ichigo, nq6, nullPointer, Odigooogle™, onaiggac, Padawan, pchofard, pemam.com.br, pfsmorigo, phfmendes, poponeis, Rafael Alencar, rafaelvital, ramonsa, raragao, renan.fernandes, renanpl, renata, rfrafael, ricardo, ricardo_listadelphi, ricdigital, rodrigo_mg, rogerio.alcantara, Roney dos Santos, rotilho, rsl_master, scattonevi, Shaman286, ThiMatsu, tiagocordeiro, tiagoxv, Tognoli, tonylock, ttaranto, Vector, Wendel Carvalho, wender, XPTO, Yoshihury, Yuri, yuri82, zorieuq 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:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi