In my app, I want to access web service using post. I wrote some code, When i press save button in my fragment, App unfortunately stopped, I dont know what i make mistake.Please anyone fix
Here my code:
At the time of save button pressed below coding execute
VehicleFragment.java:
StringEntityHC4 input;
try {
jsonObject.put("func",func);
jsonObject.put("crud","insert");
jsonObject.put("licenseplate","'"+plate_number.getText().toString()+"'");
jsonObject.put("email","'"+"admin@gmail.com"+"'");
jsonObject.put("make","'"+vehicleMake.getSelectedItem().toString()+"'");
jsonObject.put("year",manu_year.getText().toString());
jsonObject.put("type","'"+vehicleType.getSelectedItem().toString()+"'");
jsonObject.put("model", "'"+model.getSelectedItem().toString()+"'");
jsonObject.put("mobile","'"+"9090909090"+"'");
input = new StringEntityHC4(jsonObject.toString());
input.setContentType("application/json");
input.setContentEncoding("UTF-8");
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Log.v("Test", "JSON" + jsonObject);
makeVehicleHttpPostRequest(jsonObject);
Toast.makeText(getActivity().getApplicationContext(), "Saved", Toast.LENGTH_SHORT).show();
Webservice connection method:
public void makeVehicleHttpPostRequest(JSONObject jsonObject) {
// Show Progress Dialog
prgDialog.show();
try {
String wsurl = "http://XXXXXXX.com";
AsyncHttpClient client = new AsyncHttpClient();
client.post(getActivity().getApplicationContext(), wsurl, input, "application/json", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
// Hide Progress Dialog
prgDialog.hide();
try {
// JSON Object
JSONObject obj = new JSONObject(new String(responseBody));
Log.d("Vehicle Save", obj.toString());
//******* Throw error Here************
Log.d("GetActivity:",String.valueOf(getActivity()));
//****************
Log.d("GetApplication:",String.valueOf(getActivity().getApplicationContext()));
// When the JSON response has status boolean value assigned with true
if (obj.getBoolean("status")) {
Toast.makeText(getActivity().getApplicationContext(), "You are successfully saved!", Toast.LENGTH_LONG).show();
}
// Else display error message
else {
Toast.makeText(getActivity().getApplicationContext(),obj.getString("msg"), Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
Toast.makeText(getActivity().getApplicationContext(), "Error Occured [Server's JSON response might be invalid]!", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
// Hide Progress Dialog
prgDialog.hide();
// When Http response code is '404'
if (statusCode == 404) {
Toast.makeText(getActivity().getApplicationContext(), "Requested resource not found", Toast.LENGTH_LONG).show();
}
// When Http response code is '500'
else if (statusCode == 500) {
Toast.makeText(getActivity().getApplicationContext(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
}
// When Http response code other than 404, 500
else {
Toast.makeText(getActivity().getApplicationContext(), "Check your internet connection", Toast.LENGTH_LONG).show();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
Logcat:
10-08 16:31:56.948 12940-12940/com.h2o E/AsyncHttpResponseHandler﹕ User-space exception detected!
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference
at com.h2o.VehicleFragment$10.onSuccess(VehicleFragment.java:813)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:360)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
10-08 16:31:56.948 12940-12940/com.h2o D/AndroidRuntime﹕ Shutting down VM
--------- beginning of crash
10-08 16:31:56.949 12940-12940/com.h2o E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.h2o, PID: 12940
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference
at com.loopj.android.http.AsyncHttpResponseHandler.onUserException(AsyncHttpResponseHandler.java:313)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:404)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference
at com.h2o.VehicleFragment$10.onSuccess(VehicleFragment.java:813)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:360)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:184)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)