关于AsyncTask android studio到Retrofit Rest API的java.lang.NullPointerException

时间:2016-12-09 08:10:34

标签: java android rest android-asynctask cassandra

我正在尝试将数据从Android移动应用程序发送到Retrofit Rest API。

我参考了这个:

Android APP https://github.com/MiraLak/AccelerometerAndroidApp

Retrofit Rest API(服务器,处理从Android应用程序发送的数据) https://github.com/MiraLak/accelerometer-rest-to-cassandra

然后服务器将数据转发给Cassandra。

我在Android应用程序中进行了一些修改,以发送我的自定义数据(电池信息)而不是加速度计数据,就像我作为模板的项目一样。

这是我的SendAccelerationAsyncTask班级

 private class SendAccelerationAsyncTask extends AsyncTask<Collection, Void, Void> {

        protected void onPreExecute() {

        }

        @Override
        protected Void doInBackground(Collection... params) {
            try {
                SampleData training = new SampleData();
                training.setCollection(params[0]);
                cassandraRestApi.sendTrainingAccelerationValues(training);
            } catch (Exception e) {

                e.printStackTrace();
            }
            return null;
}

我的问题是,当我尝试发送数据时,AsyncTask崩溃并出现错误:

04-13 08:55:43.120 4750-4818/com.miralak.basicaccelerometer W/System.err: java.lang.NullPointerException
04-13 08:55:43.121 4750-4818/com.miralak.basicaccelerometer W/System.err:     at com.miralak.basicaccelerometer.activity.CollectDataActivity$SendAccelerationAsyncTask.doInBackground(CollectDataActivity.java:459)
04-13 08:55:43.122 4750-4818/com.miralak.basicaccelerometer W/System.err:     at com.miralak.basicaccelerometer.activity.CollectDataActivity$SendAccelerationAsyncTask.doInBackground(CollectDataActivity.java:422)
04-13 08:55:43.122 4750-4818/com.miralak.basicaccelerometer W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-13 08:55:43.123 4750-4818/com.miralak.basicaccelerometer W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-13 08:55:43.123 4750-4818/com.miralak.basicaccelerometer W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-13 08:55:43.123 4750-4818/com.miralak.basicaccelerometer W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-13 08:55:43.123 4750-4818/com.miralak.basicaccelerometer W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-13 08:55:43.123 4750-4818/com.miralak.basicaccelerometer W/System.err:     at java.lang.Thread.run(Thread.java:838)

我检查并确认发送的变量不为空 但我得到空指针异常?

由于

更新

注意: 第459行是cassandraRestApi.sendTrainingAccelerationValues(training);

我检查了training中的值:

Log.v("test", "" + training.getCollection().getStatus());
Log.v("test", "" + training.getCollection().getTechnology());
Log.v("test", "" + training.getCollection().getTemperature());

依旧......

这是sendTrainingAccelerationValues方法:

public interface CassandraRestApi {
    @POST("/test")
    Response sendTrainingAccelerationValues(@Body SampleData testing);
}

0 个答案:

没有答案