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
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
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"/>
Opa... funcionou!!! Obrigado