2012-04-23 4 views
0

Мои пользователи сообщают, что при загрузке файла JSON с использованием Wi-Fi приложение работает как шарм, но когда они пытаются загрузить тот же файл, используя свое соединение с данными: GPRS, 3G, 3.5G и т. Д. приложение силы закрывается. Это не происходит со всеми типами смартфонов, например, с моим LG Optimus Black этого не происходит.Ошибка подключения к Интернету

Для получения этого файла я использую AsyncTask.

private class GetData extends AsyncTask<Void, Void, Void> { 
     protected Void doInBackground(Void... args) { 

      DefaultHttpClient httpclient = new DefaultHttpClient(); 
      try { 

       HttpGet httpget = new HttpGet("http://url.com); 
       HttpResponse response = httpclient.execute(httpget); 
       strPlayers = inputStreamToString(response.getEntity().getContent()).toString(); 
      } 
      catch (IOException e) { e.printStackTrace(); } 
      finally { httpclient.getConnectionManager().shutdown(); } 

      return null; 
     } 

     protected void onPostExecute(Void result) { 

      Players players = new Gson().fromJson(strPlayers, Players.class); 

      quantity_darkmatter.setText(String.valueOf(players.userName)); 

     } 
    } 

Вот StackTrace()

java.lang.RuntimeException: Unable to start activity ComponentInfo{carl.fri.fer.omegan/carl.fri.fer.omegan.Research}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3701) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at carl.fri.fer.omegan.Research.onStart(Research.java:613) 
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129) 
at android.app.Activity.performStart(Activity.java:3791) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1632) 
... 11 more 

Что может быть проблема?

+0

ну, есть где-то нулевой указатель, что происходит в Research.java:613? –

ответ

0

Для не-WIFI соединение может занять значительно больше времени, так что это может быть проблемой тайм-аута соединения, когда это произойдет strPlayers будет пустым, и как нет errorhandling в onPostExecute это может дать Gson.fromJson hickups и сделать он генерирует исключение ... попробуйте проверить, что strPlayers! = null, прежде чем пытаться его проанализировать или помещать в блок try-catch, чтобы определить, выбрасывает ли оно какое-то исключение.

Есть ли выход функции e.printStackTrace() в функции doInBackground?

+0

hmm ... DefaultHttpClient по умолчанию имеет бесконечный тайм-аут, поэтому возможно, что ваше приложение висит, вы можете попытаться установить таймаут, чтобы узнать, не истечет ли время соединения (вы получите сообщение об ошибке, которое будет printStackTrace() 'ed ... почему httpclient не будет подключаться к серверу - это другой вопрос ... может быть, это связано с тем, что apache defaulthttpclient не предназначен для использования на мобильных телефонах с подключением с высокой задержкой? –

+0

вам может понадобиться чтобы посмотреть на это: http://stackoverflow.com/questions/6705170/httpclient-execute-keeps-giving-connecttimeoutexception –

+0

Я редактировал свой пост с помощью stackTrace. Я хочу взглянуть на ссылку! вы! –

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