我正在尝试将数据从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);
}