I am trying to get login details using asyntask in android but it is giving me errors occasionally. Sometimes it goes through sometimes it does not. It keeps directing me to my Jsonobject in my post execute. and i don know why.
This is my java class.
AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Maint.this);
pDialog.setMessage("getting detail...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(Void... params) {
try {
RequestBody formBody = new FormBody.Builder()
.add("email", acct.getEmail())
.add("google_id", regId)
.build();
final Request request = new Request.Builder()
.url(log)
.post(formBody)
.build();
Response response;
response = client.newCall(request).execute();
return response.body().string();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (pDialog != null) {
pDialog.dismiss();
}
String jsonData = s;
try {
JSONObject Jobject = new JSONObject(jsonData);
String pic = "";
if (acct.getPhotoUrl() == null || acct.getPhotoUrl().toString().isEmpty() || acct.getPhotoUrl().toString().contentEquals("")) {
pic = "https://lh3.googleusercontent.com/-5O1D0RBwhGE/AAAAAAAAAAI/AAAAAAAAAUg/Lm43fa7Sbgg/s36-p-k-rw-no/photo.jpg";
} else {
pic = acct.getPhotoUrl().toString();
}
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(Maint.this);
SharedPreferences.Editor edit = sp.edit();
edit.putString("firstname", acct.getGivenName());
edit.putString("lastname", acct.getFamilyName());
edit.putString("email", acct.getEmail());
edit.putString("url", pic);
edit.putString("google_id",regId);
edit.putString("check",Jobject.getString("success"));
edit.commit();
Intent uo = new Intent(getApplicationContext(), LoginActivity.class);
finish();
startActivity(uo);
} catch (JSONException e) {
e.printStackTrace();
}
}
};
asyncTask.execute();
This is my error
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
at org.json.JSONTokener.nextValue(JSONTokener.java:94)
at org.json.JSONObject.<init>(JSONObject.java:156)
at org.json.JSONObject.<init>(JSONObject.java:173)
at com.obi.thinker.fringes.Maint$2.onPostExecute(Maint.java:223)
at com.obi.thinker.fringes.Maint$2.onPostExecute(Maint.java:182)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5683)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)