Internet数据连接失败

时间:2012-04-23 10:25:35

标签: http connection gson wifi

我的用户报告说,当他们使用WiFi下载JSON文件时,该应用就像魅力,但当他们尝试使用他们的数据连接下载相同的文件时: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

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

对于非WIFI,连接可能需要相当多的时间,因此可能是连接超时问题,当发生这种情况时strPlayers将为空,并且由于onPostExecute中没有错误处理,这可能会给Gson.fromJson hickups并使其成为可能抛出一个异常...尝试测试strPlayers!= null然后尝试解析它或将它放在try-catch块中以查看它是否抛出某种异常。

doInBackground函数中是否有e.printStackTrace()的输出?