2012-05-22 2 views
0

Я звоню в веб-службу, чтобы нарисовать точку на карте. Я нашел 750 записей в ответе. в то время как загрузка страницы второй раз показывает мне эту ошибку.Ошибка при обработке ответа в почтовом сервисе

неустранимый: резьбонарезной 26 java.lang.OutOfMemoryError на java.lang.String (String.java:513) на org.apache.http.util.CharArrayBuffer.toString (CharArrayBuffer.java:261.) at org.apache.http.util.EntityUtils.toString (EntityUtils.java:141) at org.apache.http.util.EntityUtils.toString (EntityUtils.java:146) at org.apache.http.impl .client.BasicResponseHandler.handleResponse (BasicResponseHandler.java:76) at org.apache.http.impl.client.BasicResponseHandler.handleResponse (BasicResponseHandler.java:59) at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:657) at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:627) at org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java:616) at com.roundmenu.Nearme .run (Nearme.java:583) в java.lang.Thread.run (Thread.java:1019)

@Override 
public void run() { 
    try { 
     HttpGet post = null; 

     Log.e("", "Share.isfromfilter = " + Share.isfromfilter); 
     if (Share.isfromfilter) { 

      Log.e("", "Teset 1"); 

      Log.e("", "Share.CuisineValue = " + Share.CuisineValue); 

      if (Share.CuisineValue.equalsIgnoreCase("")) { 
       Log.e("", "Teset 2"); 
       post = new HttpGet("my url here"); 
      } else { 
       Log.e("", "Teset 3"); 
       post = new HttpGet("my url here"); 
      } 

     } else { 
      Log.e("", "Teset 4"); 
      post = new HttpGet("my url here"); 

     } 
     post.addHeader("apikey", "880639B3638597349AC1BE6F70FC5682"); 
     ResponseHandler<String> responseHandler = new BasicResponseHandler(); 

     response = client.execute(post, responseHandler); 
     System.out.println("----------------------------------------"); 
     System.out.println(response); 

     handler.sendEmptyMessage(0); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     handler.sendEmptyMessage(1); 
    } 
} 

Я также получаю VM Out ошибки бюджета во время выполнения этого кода.

ответ

0

Android Dalvik VM имеет ограничение кучи. Не могли бы вы рассказать, сколько байт возвращается веб-службе? Если размер данных огромен, рекомендуется постепенно считывать данные, а не передавать все в один большой буфер.

Пожалуйста, обратитесь к http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/HttpClient.html

HttpResponse response = httpclient.execute(post); 
HttpEntity entity = response.getEntity(); 

if (entity != null) { 
    InputStream instream = entity.getContent(); 
    try { 
    BufferedReader reader = new BufferedReader(
      new InputStreamReader(instream)); 
    String data = null; 
    while ((data = reader.readLine()) != null) { 
     ... 
    } 
    } 
} 
+0

Я получаю 23000 байт данных в моем ответе – dilipkaklotar

+0

Это трудно сказать, и определить причину основания корня на трассировку стека вызовов. Вы можете попробовать DDMS для проверки вашего использования кучи/бара в вашем приложении. – jclin

Смежные вопросы