Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Estou com dúvida no curso de Android : Integração com o servidor e Mapas, no exercício do capítulo Integração com outros sistemas: conectividade.

08-22 21:17:51.759: E/AndroidRuntime(20661): java.lang.RuntimeException: java.net.UnknownHostException: www.caelum.com.br

Não está funcionando, fiz o codigo exatamente igual ao video. fala que o host é desconhecido

6 respostas

Olá Rodolpho!

Você pode postar sua classe WebClient e o trecho de código no qual vc usa a classe?

Abs!

Sim WebClient.java

package br.com.caelum.cadastro.util;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class WebClient {

    private String urlServer;

    public WebClient(String urlServer)
    {
        this.urlServer = urlServer;
    }

    public String post(String dadosJSON)
    {
        try
        {

            HttpClient client = new DefaultHttpClient();                
            HttpPost post = new HttpPost(urlServer);

            post.setEntity(new StringEntity(dadosJSON));
            post.setHeader("Content-type","application/json");
            post.setHeader("Accept", "application/json");

            HttpResponse response = client.execute(post);
            HttpEntity resposta = response.getEntity();

            String respostaEmJSON = EntityUtils.toString(resposta);

            return respostaEmJSON;

        }
        catch (Exception e)
        {                
            throw new RuntimeException(e);
        }
    }

}
// listaAlunos
package br.com.caelum.cadastro;

import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.DefaultClientConnection;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import br.com.caelum.cadastro.adapter.ListaAlunosAdapter;
import br.com.caelum.cadastro.dao.AlunoDAO;
import br.com.caelum.cadastro.modelo.Aluno;
import br.com.caelum.cadastro.task.EnviaAlunosTask;
import br.com.caelum.cadastro.util.AlunoConverter;
import br.com.caelum.cadastro.util.WebClient;
import br.com.caelum.cadastro.extras.Extras;

public class ListaAlunos extends Activity {

    private ListView lista;
    private Aluno aluno;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listagem_alunos);

        lista = (ListView)  findViewById(R.id.lista);

        registerForContextMenu(lista);

        lista.setOnItemClickListener(new OnItemClickListener() {            


            @Override
            public void onItemClick(AdapterView<?> adapter, View view , int posicao, long id) {

                Aluno alunoClicado = (Aluno) adapter.getItemAtPosition(posicao);                
                Intent irParaFormulario = new Intent(ListaAlunos.this, Formulario.class);
                irParaFormulario.putExtra(Extras.ALUNO_SELECIONADO, alunoClicado);


                startActivity(irParaFormulario);

            }

        });

        lista.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View view,
                    int posicao, long id) {
                // TODO Auto-generated method stub

                aluno = (Aluno) adapter.getItemAtPosition(posicao);            
                return false;

            }


        });
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {

        MenuItem ligar = menu.add(0,0,0, "Ligar");         
        Intent intentLigar = new Intent(Intent.ACTION_CALL);
        intentLigar.setData(Uri.parse("tel:"+aluno.getTelefone()));         
        ligar.setIntent(intentLigar);

        MenuItem sms = menu.add(0,0,0, "Enviar SMS");
        Intent intentSms = new Intent(Intent.ACTION_VIEW);
        intentSms.setData(Uri.parse("sms:" + aluno.getTelefone()));
        sms.setIntent(intentSms);



        MenuItem site = menu.add("Navegar no site");
        site.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {

                String siteAluno = null;


                Intent irParaOSite = new Intent(Intent.ACTION_VIEW); 

                if (siteAluno.startsWith("http:")) {
                    siteAluno = aluno.getSite();
                } else {
                    siteAluno = "http:"+aluno.getSite();
                }                 

                irParaOSite.setData(Uri.parse(siteAluno));                
                startActivity(irParaOSite);

                return false;
            }
        });


        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {                

                AlertDialog builder = new AlertDialog.Builder(ListaAlunos.this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setTitle("Deletar")
                .setMessage("Deseja mesmo deletar?")
                .setPositiveButton("Quero",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                AlunoDAO dao = new AlunoDAO(ListaAlunos.this);                
                                dao.deletar(aluno);                
                                dao.close();
                                carregaLista();
                            }
                        }).setNegativeButton("Não", null).show();
                return false ;
            }
        });

        MenuItem mapa = menu.add(0,0,0, "Ver no Mapa");         
        Intent intentMapa = new Intent(Intent.ACTION_VIEW);
        intentMapa.setData(Uri.parse("geo:0,0?z=14&q=" + aluno.getEndereco()));         
        mapa.setIntent(intentMapa);

        menu.add("Enviar e-mail");

        super.onCreateContextMenu(menu, v, menuInfo);
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        carregaLista();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.listagem_alunos, menu);        
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int itemClicado = item.getItemId();

        switch (itemClicado){
        case R.id.novo:
            Intent irParaFormulario =  new Intent(this, Formulario.class);            
            startActivity(irParaFormulario);

            break;

        case R.id.enviar_alunos:

            EnviaAlunosTask task = new EnviaAlunosTask(this);
            task.execute();

            break;

            /*            
            AlunoDAO dao = new AlunoDAO(this); 
            List<Aluno> alunos = dao.getLista();
            dao.close();

            String json = new AlunoConverter().toJSON(alunos);

            Toast.makeText(this, json, Toast.LENGTH_LONG).show();
            */


        }






        return super.onOptionsItemSelected(item);
    }

    private void carregaLista() {
        AlunoDAO dao = new AlunoDAO(this);        
        List<Aluno> alunos = dao.getLista(); 
        ListaAlunosAdapter adapter = new ListaAlunosAdapter(alunos, this);
        lista.setAdapter(adapter);
    }   

}
//Envia Alunos Task
package br.com.caelum.cadastro.task;

import java.util.List;

import br.com.caelum.cadastro.ListaAlunos;
import br.com.caelum.cadastro.dao.AlunoDAO;
import br.com.caelum.cadastro.modelo.Aluno;
import br.com.caelum.cadastro.util.AlunoConverter;
import br.com.caelum.cadastro.util.WebClient;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.widget.Toast;

public class EnviaAlunosTask extends AsyncTask<Integer, Double, String> {

    private Activity context;
    private ProgressDialog progress;

    public EnviaAlunosTask(Activity context) {
        this.context = context;
    }    

    @Override
    protected String doInBackground(Integer... params) {

        String urlServer ="http://www.caelum.com.br/mobile";

        AlunoDAO dao = new AlunoDAO(context);
        List<Aluno> alunos = dao.getLista();
        dao.close();

        String dadosJSON = new AlunoConverter().toJSON(alunos);        
        WebClient client = new WebClient(urlServer);        
        final String respostaJSON = client.post(dadosJSON);        
        return respostaJSON;
    }

    @Override
    protected void onPostExecute(String result) {
        progress.dismiss();
        Toast.makeText(context, result, Toast.LENGTH_LONG).show();

    }

    @Override
    protected void onPreExecute() {
        progress = ProgressDialog.show(context, "Aguarde ...", "Enviando dados para web...",true,true);
    }
}

Alguma sugestão ?

Fiz o exemplo do enunciado o exercicio e não funcionou tambem

Cara tava tendo um erro parecido, mudou quando eu adicionei a permissão de uso da internet no meu androidManifest:


<uses-permission android:name="android.permission.INTERNET"/>
solução!

Opa... funcionou!!! Obrigado