我正在尝试运行POST webservice,但我的hashmap返回null。我不知道如何将内容类型设置为json,我相信这是我的应用程序导致异常的原因。如何解决此异常?< / p>
Map<String, String> new_details = new HashMap<>();
new_details.put("registrationNo","CELLOTESTIMMOB");
new_details.put("commandType","LOCK");
new_details.put("requestID","TEST12345");
String URL = "MY_REST_URL";
PostApi api = new PostApi(Request.Method.POST, URL, new JSONObject(new_details), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
String status = response.getString("status");
if (status.equals("Success")) {
Toast.makeText(getApplicationContext(), "DONE", Toast.LENGTH_SHORT).show();
}
}catch (Exception e)
{
e.printStackTrace();
}
return;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
App.getVolleyQueue().add(api);
05-19 19:02:34.907 8425-8425/t4u.com.lairdapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: t4u.com.lairdapp, PID: 8425
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference
at com.android.volley.Request.<init>(Request.java:136)
at com.android.volley.toolbox.JsonRequest.<init>(JsonRequest.java:58)
at com.android.volley.toolbox.JsonObjectRequest.<init>(JsonObjectRequest.java:47)
at t4u.com.lairdapp.api.PostApi.<init>(PostApi.java:20)
at t4u.com.lairdapp.BaseActivity$C00001.onClick(BaseActivity.java:128)
at android.view.View.performClick(View.java:5246)
at android.widget.TextView.performClick(TextView.java:10565)
at android.view.View$PerformClick.run(View.java:21200)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
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:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
package t4u.com.lairdapp.api;
import android.util.Log;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkResponse;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONObject;
public class PostApi extends JsonObjectRequest {
Response.Listener<JSONObject> listener;
public PostApi(int method, String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) {
super(method, url, jsonRequest, listener, errorListener);
this.listener=listener;
setRetryPolicy(new DefaultRetryPolicy(
0,
-1,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
Log.e("", "PUT OTP Response : " + super.parseNetworkResponse(response));
return super.parseNetworkResponse(response);
}
@Override
protected void deliverResponse(JSONObject response) {
//super.deliverResponse(response);
listener.onResponse(response);
}
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
Log.e("","PUT OTP Volley Error : " + volleyError);
return super.parseNetworkError(volleyError);
}
}