【发布时间】:2016-04-11 14:53:24
【问题描述】:
我正在使用 volley 包处理 Gson,但它会抛出错误。我的网址没问题。它在浏览器上给了我 json 值,但在方法中它抛出空指针异常。从 stringRequest 行它直接进入 try 块并返回 null 值,如“0x239c9b75 NORMAL null”
请帮我解决这个问题。
public void getJobs() {
// mProgressBar.setVisibility(View.VISIBLE);
//for open jobs Client/GetOpenJobs
StringRequest request = new StringRequest(Request.Method.GET, RestAPI.getInstance().urlString+ "Getrewardlist?businessid="+1,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
getRewardList = (new Gson()).fromJson(response, GetRewardList.class);
try {
if (ResponseCode == 200) {
RewardListEntity[] Items = getRewardList.entitiesList;
if(Items!=null&& Items.length>0) {
Utilities.R_entities = Arrays.asList(Items);
mProgressBar.setVisibility(View.GONE);
return;
}else{
mProgressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this, "No jobs exists", Toast.LENGTH_SHORT).show();
return;
}
} else {
Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();
mProgressBar.setVisibility(View.GONE);
}
} catch (Exception e) {
String ResponseMessage = e.getMessage();
Toast.makeText(MainActivity.this, ResponseMessage, Toast.LENGTH_SHORT).show();
mProgressBar.setVisibility(View.GONE);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyError e = parseNetworkError(error);
Toast.makeText(MainActivity.this, e + "", Toast.LENGTH_SHORT).show();
mProgressBar.setVisibility(View.GONE);
return;
}
protected VolleyError parseNetworkError(VolleyError volleyError) {
if (volleyError.networkResponse != null && volleyError.networkResponse.data != null) {
VolleyError error = new VolleyError(new String(volleyError.networkResponse.data));
volleyError = error;
}
return volleyError;
}
}
) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
// params.put("SessionToken", RestAPI.getInstance().sessionToken);
return params;
}
};
try {
request.setRetryPolicy(new DefaultRetryPolicy(60000, 60, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
VolleyApplication.getInstance().getRequestQueue().add(request);
} catch (Exception e) {
e.printStackTrace();
}
}
【问题讨论】:
-
目前还不清楚 NPE 在哪里,您可以指定行和可能某种堆栈跟踪
标签: java android android-volley gson