Conexão estabelecida foi anulada

2,813 views
Skip to first unread message

Vinny Valente

unread,
Aug 12, 2014, 4:12:34 PM8/12/14
to androidb...@googlegroups.com
Galera,

To voltando a programar em android e tentando fazer uma conexão com um WebService em php.
O WS funciona legal, o JSON retorna legal no browser.
O android Manifest ta com permissão pra internet.
Agora no android ta dando o erro abaixo.

Linha: HttpResponse httpResponse = client.execute(httpPost);

[2014-08-12 14:58:39 - ddmlib] Uma conexão estabelecida foi anulada pelo software no computador host
java.io.IOException: Uma conexão estabelecida foi anulada pelo software no computador host
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(Unknown Source)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.write(Unknown Source)
at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
at com.android.ddmlib.Client.sendAndConsume(Client.java:642)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:488)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:831)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:799)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:759)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:648)
at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44)
at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:576)


Agradeço a ajuda desde já.

Vinny Valente

unread,
Aug 13, 2014, 4:24:14 PM8/13/14
to androidb...@googlegroups.com
Bom ainda não resolvi o problema, mas se alguem estiver com o mesmo problema, segue link com
uma porção de maneiras de arrumar que serviu para algumas pessoas, porem, para mim não serviu...

Geovani de Souza

unread,
Aug 13, 2014, 5:03:02 PM8/13/14
to androidb...@googlegroups.com
Vinny, por acaso vc tá usando ADT atualizado ou Android Studio Beta no channel canary? Isso tá me cheirando a erro do DDMS. Talvez a ferramenta de medição do tráfego de rede, que pode estar dando crash. Não acho que seja seu projeto.

Pra confirmar, talvez vc possa testar seu código (o projeto todo) em outra máquina, com outra versão ou ainda montar uma VM e testar por ela...

Vinny Valente

unread,
Aug 13, 2014, 5:12:04 PM8/13/14
to androidb...@googlegroups.com
Então, estou usando o ADT sim, mas estranho que depois que o app esta instalado no celular, testo diretamente pelo 3G e tb da o mesmo erro.
Estou achando que talvez seja meu servidor/host, mas tb não faço ideia do que seja.

Geovani de Souza

unread,
Aug 13, 2014, 5:15:01 PM8/13/14
to androidb...@googlegroups.com
Vc reiniciou o adb?

Vinny Valente

unread,
Aug 13, 2014, 5:20:53 PM8/13/14
to androidb...@googlegroups.com
Já fiz tudo possivel,

Já reniciei o ADB, o eclipse, a maquina...
Já troquei o codigo de post pra get, ja desinstalei programas, já troquei o WS de dominio.. ja fiz tanta coisa q nem lembro mais rs

Em quarta-feira, 13 de agosto de 2014 18h15min01s UTC-3, Geovani de Souza escreveu:
Vc reiniciou o adb?

Vinny Valente

unread,
Aug 13, 2014, 5:22:56 PM8/13/14
to androidb...@googlegroups.com
Segue codigo, vai que eu esteja fazendo algo errado...

package com.vinny.bepro;

//Manipulando dados de 
import java.util.ArrayList; // Criar e manipular array de objetos
import java.io.BufferedReader; //
import java.io.IOException; // Manipulando exceções de entrada e saída
import java.io.InputStream;
import java.io.InputStreamReader; // Manipulando dados de entrada
import java.net.URI; // fazendo requisição via identificador Unified Resource Identifier


//bibliotecas http
import org.apache.http.client.HttpClient; // Biblioteca principal para manipular a conexão
import org.apache.http.client.methods.HttpGet; // Trabalhar com o método GET
import org.apache.http.client.methods.HttpPost; // Trabalhar com o método POST
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse; // Obter a resposta
import org.apache.http.NameValuePair;
import org.apache.http.conn.params.ConnManagerParams; // Gerenciador para Trabalhar com parametros
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.params.HttpConnectionParams; // Conexão dos parametros
import org.apache.http.params.HttpParams; // Manipular os parametros
import org.apache.http.impl.client.DefaultHttpClient; // Para fazer a comunicação
import org.apache.http.client.entity.UrlEncodedFormEntity; // trabalhar com entidades
import org.apache.http.entity.StringEntity;
import org.json.JSONObject;

import android.R.string;

public class ConexaoHTTPClient {

 public static final int HTTP_TIME_OUT = 30 *1000; // faz o tempo da conexão
 private static HttpClient httpClient;            //  Criar um objeto do HttpCliente

 // Método para retornar a conexao
 private static HttpClient getHttpClient(){

     if(httpClient == null){

         httpClient = new DefaultHttpClient(); //instacia a conexao padrão
         final HttpParams httpParams = httpClient.getParams(); // Pega os parametros
         // Seta o tempo de execução para as conexões
         HttpConnectionParams.setConnectionTimeout(httpParams, HTTP_TIME_OUT);
         HttpConnectionParams.setSoTimeout(httpParams, HTTP_TIME_OUT);
         ConnManagerParams.setTimeout(httpParams, HTTP_TIME_OUT);
     }
     return httpClient;
 }

 // Método para rececer os parametros POST
 public static String executaHttpPost(String url, ArrayList<NameValuePair> paramentrosPost) throws Exception{

     BufferedReader bufferedReader = null;

     try{

         /*HttpClient client = getHttpClient(); // paga a conexao acima
         HttpPost httpPost = new HttpPost(url); // Cria um objeto POST e recebe a URL como parametro
         //Objeto para formatar os paramentros
         UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(paramentrosPost);

         httpPost.setEntity(formEntity);*/
     
    HttpClient client = new DefaultHttpClient();
         client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");
         HttpGet request = new HttpGet();
         request.setHeader("Content-Type", "text/plain; charset=utf-8");
         request.setURI(new URI(url));
         HttpResponse response = client.execute(request);
         
     
     
         //HttpResponse httpResponse = client.execute(httpPost);
         //bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
         bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
         StringBuffer stringBuffer = new StringBuffer("");
         String line = "";
         String LS = System.getProperty("line.separator");
         while( (line = bufferedReader.readLine()) != null ){
             stringBuffer.append(line+ LS);
         }
         bufferedReader.close();
         String resultado = stringBuffer.toString();
         return resultado; 
     }finally{

         if(bufferedReader != null){
             try{
                 bufferedReader.close();
             }catch(IOException e){
                 e.printStackTrace();
             }
         }
     }    
 }    

 // Método para rececer os parametros POST
 public static String executaHttpPostJSON(String url, ArrayList<NameValuePair> paramentrosPost) throws Exception{

     BufferedReader bufferedReader = null;

     InputStream inputStream = null;
     String result = null;        
     try{

         HttpClient client = getHttpClient(); // paga a conexao acima
         HttpPost httpPost = new HttpPost(url); // Cria um objeto POST e recebe a URL como parametro

         //Objeto para formatar os paramentros
         //UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(paramentrosPost);

         //httpPost.setEntity(formEntity);
         HttpResponse httpResponse = client.execute(httpPost);

         HttpEntity entity = httpResponse.getEntity();
         inputStream = entity.getContent();

         bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
         StringBuilder sb = new StringBuilder();

         StringBuffer stringBuffer = new StringBuffer("");
         String line = null;

         while( (line = bufferedReader.readLine()) != null ){
              sb.append(line + "\n");
         }
         bufferedReader.close();

         result = sb.toString();
         return result;

     }finally{

         if(bufferedReader != null){
             try{
                 bufferedReader.close();
             }catch(IOException e){
                 e.printStackTrace();
             }
         }
     }        
 }    

 // Metodos para receber a URL e trabalhar com o GET
 public static String executaHttpGet(String url) throws Exception{

     BufferedReader bufferedReader = null;

     try{

         HttpClient client = getHttpClient(); // paga a conexao acima
         HttpGet httpGet = new HttpGet(url); // Cria um objeto POST e recebe a URL como parametro

         httpGet.setURI(new URI(url));
         HttpResponse httpResponse = client.execute(httpGet);
         bufferedReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
         StringBuffer stringBuffer = new StringBuffer("");
         String line = "";
         String LS = System.getProperty("line.separator");
         while( (line = bufferedReader.readLine()) != null ){
             stringBuffer.append(line+ LS);
         }
         bufferedReader.close();
         String resultado = stringBuffer.toString();
         return resultado; 
     }finally{

         if(bufferedReader != null){
             try{
                 bufferedReader.close();
             }catch(IOException e){
                 e.printStackTrace();
             }
         }
     }        
 }    
}

Em quarta-feira, 13 de agosto de 2014 18h15min01s UTC-3, Geovani de Souza escreveu:
Vc reiniciou o adb?

Geovani de Souza

unread,
Aug 13, 2014, 7:14:15 PM8/13/14
to androidb...@googlegroups.com
Vinny, só pra tirar uma dúvida: o erro acontece exatamente no momento em que a request é iniciada, ou alguns segundos depois?

Vinny Valente

unread,
Aug 14, 2014, 8:17:43 AM8/14/14
to androidb...@googlegroups.com
Geovani,

Acontece exatamente no momento do request. No debug quando passa na linha ele já sai pro finally...

Vinny Valente

unread,
Aug 14, 2014, 10:14:38 AM8/14/14
to androidb...@googlegroups.com
Conseguiiiiii,

Não sei a razão, mas hj de manha fiz varios teste.
Primeiro resgatei um projeto meu antigo e fiz um teste nele com o mesmo WS e funcionou...
Ai peguei o codigo da resquest HTTP e joguei nesse projeto que não tava funcionando e mesmo assim não funcionou.
Criei um projeto novo, peguei o codigo do projeto que estava funcionando e joguei nesse projeto novo e funcionou normalmente.
Ai fiz o contrario, peguei o codigo que não estava funcionando e joguei no projeto novo e FUNCIONOU.

Acho que o problema é no eclipse ou com o projeto...

Pra funcionar tiver que criar um novo projeto!

Valeu pela ajuda Geovani!

Geovani de Souza

unread,
Aug 14, 2014, 10:47:20 AM8/14/14
to androidb...@googlegroups.com
Isso é o tinhoso zoando os arquivos de cache do Eclipse... kkkk

Dar um "clean" no projeto poderia ter ajudado, mas acho que ninguém lembrou de sugerir isso... #fikdik

Vinny Valente

unread,
Aug 14, 2014, 11:44:32 AM8/14/14
to androidb...@googlegroups.com
Opaaa, a cada compilada, eu limpada o projeto, mas sem sucesso tb !

Vinny Valente

unread,
Aug 14, 2014, 2:33:39 PM8/14/14
to androidb...@googlegroups.com
Descobri o problema...
Testando outras coisas acabei retirando o metodo doInBackground e descobri que se não for por ele, a requisição não funciona...
Tem q ser rodado em Background pra funcionar, mas ai cai em outro problema...
Quando vou jogar os dados retornado do WS ele ainda não passou na classe que recebe o Json e ai tudo fica null... Dificl viu, sou muito leigo ...

geovani...@gmail.com

unread,
Aug 14, 2014, 2:39:23 PM8/14/14
to androidb...@googlegroups.com
Bom saber que achou a solução Vinny!

Agora é um pouco menos leigo e ainda deixou um ótimo tópico no grupo pra tirar as dúvidas da galera futuramente... ;)


Reply all
Reply to author
Forward
0 new messages