【发布时间】:2016-02-05 07:24:42
【问题描述】:
我正在尝试从 GET 请求发送一些身份验证标头,并尝试使用 Volley JsonObjectRequest 调用:
Map<String,String> params=new HashMap<String,String>();
params.put("token","fghjbvjhnjjk");
activity.showDialog();
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,url,
new JSONObject(params), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(tag, response.toString());
activity.hideDialog();
try {
activity.onRequestServed(response, code);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(tag, "Error: " + error.getMessage());
Log.e(tag, "Site Info Error: " + error.getMessage());
Toast.makeText(activity.getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
activity.hideDialog();
try {
activity.onRequestServed(null,code);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
req.setShouldCache(true);
但它的表现:
Caused by: 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)
我在某处读到,您可以通过创建hashmap 来传递标头,从而使用该参数创建一个新的JsonObject。也许这将适用于 POST 请求。请帮忙..
【问题讨论】:
-
这是上面代码中的“Request.java:136”行吗?
-
这是 volley 库中的 Request 类。
-
试试
protected Map<String, String> getParams() { Map<String, String> params = new HashMap<>();可能对你有帮助