Erro com o HttpResponse (android.os.NetworkOnMainThreadException)

Olá Galerinha!

Eu sou um pouco novo no desenvolvimento para android…

Estou desenvolvendo uma aplicação que fará acesso a um BD MySQL…

Estou utilizando este codigo:

public void Pegar(String URL){ try { HttpClient ClienteHTTPPost = new DefaultHttpClient(); HttpPost Post = new HttpPost(URL); HttpResponse Resposta = ClienteHTTPPost.execute(Post); System.out.println("Pegou Beleza"); } catch (Exception e) { // TODO: handle exception System.out.println("Deu erro: "+e); } }

bem mas quando tento fazer isso ele retorna:

Alguem pode me ajudar??

Grato pela atenção:!:
Fiquem com DEUS:!:

Ninguem:?:
Nem uma diquinha:?:

Bem galerinha pesquisando na net eu mudei de ideia…

Ao invés de utilizar o httpGet eu vou usar uma conexão direta com o MySQL…

Como se utiliza normalmente nos Sistemas para desktop…

Vi um tuto na internet e segundo o cara que explica dá certo…

O codigo para conexao esta ficando assim:

public void Conectar(String host, int porta, String BD, String usuario, String senha){ try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Conectado com sucesso1!!"); } catch (Exception e) { System.out.println("Erro1:"+e); } try { conexao = DriverManager.getConnection("jdbc:mysql://"+host+":"+porta+"/"+BD, usuario, senha); Alerta("Conectado com sucesso!", "Conexao"); System.out.println("Conectado com sucesso2!!"); } catch (Exception e) { System.out.println("Erro2:"+e); } }
Vejam que eu estou apenas tentando conecatar…

mas fica dando erro na linha:

Me ajudem porfavor!?!? :oops:

Grato pela atenção!

Fiquem com DEUS:!:

Você ta colocando no arquivo manifest a Tag de permissão pra acessar internet?

Já coloquei sim…

Mas ainda está dando o mesmo erro…

Obrigado pela atenção…

Fica com DEUS:!:

Olá galerinha!!

Ainda não consegui solucionar meu problema :frowning:

Mas enquanto participava deste tópico Descobri este tutorial(os 3 primeiros tópicos)

Muito bom para quem quer aprender algo sobre WebServices e Android…

Quanto ao meu projeto já tentei até me conectar diretamente utilizando o MySQLConnector mas dá erro…

Fiquem com DEUS :!::!:

O proprio erro diz:

android.os.NetworkOnMainThreadException

A idéia é não fazer coisas que demoram na MainThread para a aplicação estar sempre responsiva.

Voce pdoe fazer com ASyncTask ou em outra Thread e sincronizar através de mensagens com Handler.

porque será que ninguem nunca posta um exemplo pratico, apenas falam tipo: “-Utilize AsyncTask que resolve” porem tem pessoas como eu que nao sabem fazer nem com isto, será que poderiam colocar um exemplo pratico, acessando o mysql por exemplo, porque daí se pode ter um molde para conseguir seguir sozinho. Obrigado pela atenção de todos.

Pressupomos que quem postou a duvida já tenha conhecimento básico em Java e Arquitetura Android já que não foi dito nada.

Anyway…

[code]AsyncTask myTask = new AsyncTask<Void,Void,Void>{

@Override
protected Void doInBackgroud(Void… params){

Conectar(String host, int porta, String BD, String usuario, String senha); //aconselho enviar um listener para notificar a mainThread sobre o que ta rolando na asyncTask

return null;
}

};

myTask.execute();[/code]

[quote=landantas]Olá Galerinha!

Eu sou um pouco novo no desenvolvimento para android…

Estou desenvolvendo uma aplicação que fará acesso a um BD MySQL…

Estou utilizando este codigo:

public void Pegar(String URL){ try { HttpClient ClienteHTTPPost = new DefaultHttpClient(); HttpPost Post = new HttpPost(URL); HttpResponse Resposta = ClienteHTTPPost.execute(Post); System.out.println("Pegou Beleza"); } catch (Exception e) { // TODO: handle exception System.out.println("Deu erro: "+e); } }

bem mas quando tento fazer isso ele retorna:

Alguem pode me ajudar??

Grato pela atenção:!:
Fiquem com DEUS:!:[/quote]

Embora este poste seja antigo.
Isto resolve uma das causas deste problema.
http://blog.vogella.com/2012/02/22/android-strictmode-networkonmainthreadexception/

Estava com mesmo problema
adiciona esse codigo, q ele libera pra executar, depois do :

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.<…>);

//ele libera a execução de rede no onCreate

 [b]  if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }[/b]

So completando olha as videos aulas desse cara http://www.youtube.com/watch?v=G8m5wlSoazA começa na aula 4042 e so seguindo a sequencia ele mostra post e get.

[quote=brunosamuel]Estava com mesmo problema
adiciona esse codigo, q ele libera pra executar, depois do :

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.<…>);

//ele libera a execução de rede no onCreate

 [b]  if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
    }[/b][/quote]

Olá,

Só para esclarecer, isso é um “quebra-galho”, não é o recomendado.
O recomendado é colocar uma tarefa potencialmente demorada em outra Thread.

Abraços

entendi modifiquei meu código coloquei o DownloadWebPageTask.
Obrigado

Olá Também estou iniciando em android, hoje consegui resolver o problema NetworkOnMainThreadException , essa exceção pode ser resolvida da seguinte maneira, fui até o AndroiManifest.xml e alterei a seguinte linha

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion=“17” />

Para:

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion=“9” />

Pronto assim ele não Bloqueia a aplicação e permite a comunicação, no meu caso ficou ótimo como no emulador.
Falou, espero que ajude.

Eai rapaz vc conseguiu resolver o seu problema ou ainda esta com duvida?
Eu acho que tenho a resposta!