Retornar JSON

Bom tarde galera, criei uma webservice em java que retorna o seguinte:

{“cliente”:[{“cpf”:“111222333-00”,“endereco”:“Rua das ruas, 9”,“id”:“1”,“nome”:“Alexandre Antunes”},{“cpf”:“060081304-56”,“endereco”:“Rua pessoa de melo, 455”,“id”:“2”,“nome”:“Valério Bezerra Leite”},{“cpf”:“00000000000”,“endereco”:“Rua pessoa de melo, 455”,“id”:“3”,“nome”:“Teste”}]}

até aí tudo bem, mas quando fui testar se tava rodando simplesmente não faz nada e depois de muito tempo ele retorna o erro

06-08 18:45:29.594: E/GetHttp(569): org.apache.http.conn.ConnectTimeoutException: Connect to /10.0.0.2:8080 timed out 06-08 18:45:29.599: E/WS(569): org.json.JSONException: End of input at character 0 of

Logo abaixo esta o código:

public class Exemolows extends Activity {
   
    private String page;
    private ProgressDialog pd;
    private String URL_WS = "http://10.0.0.2:8080/WebServiceREST/buscarTodos";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
//        Progresso por tempo indeterminado.
        pd = null;
        pd = ProgressDialog.show(this,"Aguarde", "Sincronizando com WebService", true, false);
       
       
        //Inicia-se uma Thread para processar o webservice
        try{
            Thread thread = new Thread();
            thread.start();
        }catch (Exception e) {
            pd.dismiss();
            Log.e("WS", e.toString());
        }

        this.JSONFile(URL_WS);
    }

    private void JSONFile(String url){
        try{
           
            //Le a pagina
            GetHttp http = new GetHttp(url);
            // page contem a string json
            page = http.page;
           
            //nativo do SDK  da o parse da string json
            JSONObject object = (JSONObject) new JSONTokener(page).nextValue();
           
            // monta o array do retorno do json, lembrando que retorno é o PAI do json impresso em page.
            //{"retorno":[ {"campo1":"valor1"},{"campo2":"valor2"},{"campo3":"valor3"} ]}
            JSONArray message = object.getJSONArray("cliente");
           
            //Percorre o array retornado
            //campo1, 2 e 3 são os nós da string json {"campo1":"valor1"},{"campo2":"valor2"},{"campo3":"valor3"}
            for(int i=0;i<message.length();i++){
                JSONObject lines = (JSONObject) new JSONTokener(message.getString(i)).nextValue();
                Log.i("WS", "[Retorno do WS]");
                Log.i("WS", "Retorno: "+ lines.getString("cpf") );
                Log.i("WS", "Retorno: "+ lines.getString("endereco") );
                Log.i("WS", "Retorno: "+ lines.getString("nome") );
                Log.i("WS", "[/Retorno do WS]");
            }
           
            Log.i("WS", "Sincronizado com sucesso");
            pd.dismiss();
        }catch (Exception e) {
            Log.e("WS",e.toString());
        }
    }
   
    //Classe de apoio geralmente em outro arquivo .java
    // Essa classe pode ser entendia mas a princípio não precisa-se mexer nela, ela funciona apenas coloquea no projeto.
    // A função dela, basicamente é acessar a pagina que imprime a string json, ler essa string, e coloca-la em page.
    class GetHttp {
       
        public String page = "";
       
        public GetHttp(String URL) throws Exception{
            BufferedReader bufferedReader = null;
            try{
                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);
                bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                StringBuffer stringBuffer = new StringBuffer("");
                String line = "";
                String NL = System.getProperty("line.separator");
               
                Log.d("GetHttp","Iniciando leitura de buffer.");
                while ((line = bufferedReader.readLine()) != null){
                    stringBuffer.append(line + NL);
                    Log.d("GetHttp", stringBuffer.toString());
                }
                bufferedReader.close();
                Log.d("GetHttp", "Leitura de buffer finalizada");
               
                page = stringBuffer.toString();
            }catch (Exception e) {
                Log.e("GetHttp", e.toString());
            }finally{
                if (bufferedReader != null){
                    try{
                        bufferedReader.close();
                    }catch (IOException e){
                        Log.e("GetHttp", e.toString());
                    }
                }
            }
        }
    }
}

Obs: Coloquei a permissão pra Internet no manifest.

O primeiro erro é um timeout, pelo o que parece, ele não consegue pegar o valor do WebService e tenta construir um JSONObject com uma String vazia, por isso o erro.

se eu nao me engano
o ip quando vc esta testando por emulador
é 10.0.2.2 e nao 10.0.0.2

eu acho mas nao tenho ctz
hehee

Vc poderia me ajudar, existe ha possibilidade de melhorar o processo? Fiz o mesmo funcionou perfeitamente porem quando tem mais de 5 mil registros para le do json e gravar no banco de dados leva cerca de 10 minutos, achei que o processo ficou lento.

Obrigado