I am trying to send data from an Android Mobile App to Retrofit Rest API.
I took reference from this:
The Android APP https://github.com/MiraLak/AccelerometerAndroidApp
Retrofit Rest API (server, handles the data sent from the android app) https://github.com/MiraLak/accelerometer-rest-to-cassandra
the server then forwards the data to Cassandra.
i did some modification in the android app to send my custom data (battery info) instead of the accelerometer data as in the project i took as template.
Here is my SendAccelerationAsyncTask
Class
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;
}
My problem is that when i try to send to data, the AsyncTask crashes with error:
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)
I checked and confirmed that the variable being send is not null but I am getting null pointer exception?
Thanks
update
NOTE:
line 459 is cassandraRestApi.sendTrainingAccelerationValues(training);
i checked the values in training
by:
Log.v("test", "" + training.getCollection().getStatus());
Log.v("test", "" + training.getCollection().getTechnology());
Log.v("test", "" + training.getCollection().getTemperature());
and so on..
here is the sendTrainingAccelerationValues
method:
public interface CassandraRestApi {
@POST("/test")
Response sendTrainingAccelerationValues(@Body SampleData testing);
}