Android 截击的自定义错误响应

Android 截击的自定义错误响应,android,json,android-volley,Android,Json,Android Volley,我在Android Studio中有一个Stringrequest,它工作正常,我的意思是我在onResponse方法上得到了响应,现在我想让volley在错误键具有真值时返回一个错误。我怎么做 这是我的要求: StringRequest stringRequest = new StringRequest(Request.Method.POST, METHOD_ACCOUNT_OTP_REQUEST, new Response.Listener<String>

我在Android Studio中有一个
Stringrequest
,它工作正常,我的意思是我在
onResponse
方法上得到了响应,现在我想让volley在错误键具有真值时返回一个错误。我怎么做

这是我的要求:

StringRequest stringRequest = new StringRequest(Request.Method.POST, METHOD_ACCOUNT_OTP_REQUEST,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.i("response", response);
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        startVerificationActivity(jsonObject.get("sender").toString());
                    } catch (JSONException e) {
                        e.printStackTrace();
                        Log.i("error", e.toString());
                    }
                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {


        }
    }){

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("mobilePhoneNumber", phoneNumber);
            params.put("clientId", CLIENT_ID);

            return params;
    };
StringRequest StringRequest=新的StringRequest(Request.Method.POST、Method\u ACCOUNT\u OTP\u Request、,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
Log.i(“响应”,响应);
试一试{
JSONObject JSONObject=新JSONObject(响应);
startVerificationActivity(jsonObject.get(“发送方”).toString());
}捕获(JSONException e){
e、 printStackTrace();
Log.i(“error”,例如toString());
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
}){
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(“手机号码”,电话号码);
参数put(“客户ID”,客户ID);
返回参数;
};
这是服务器的答案:

{“发件人”:“10008727”,“错误”:true}


我只想设置volley,当json中的
error
true
时运行
onErrorResponse

您可以创建一个新的自定义
AppStringRequest
类,该类继承自
StringRequest
,并处理上述用例

public class AppStringRequest extends StringRequest {

    // ... constructor ...

    @Override
    protected Response<String> parseNetworkResponse(NetworkResponse response) {
        // You will receive your response here in the response parameter.
        // parse the response and check whether the response has "error":true
        String parsed;
        try {
            parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
        } catch (UnsupportedEncodingException e) {
            parsed = new String(response.data);
        }

        // if it's an error, return Response.error(), otherwise, return Response.success()

        try {
            JSONObject resObj = new JSONObject(parsed);
            boolean error = resObj.getBoolean("error");
            if (error) {
                return Response.error(new VolleyError());
            } else {
                return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));
            }
        } catch (JSONException e) {
              e.printStractTrace()
              // your server response has some issues
        }
        return Response.error(new VolleyError("Error message")); // can send error message in the VolleyError
    }        

}
错误消息将出现在
onErrorResponse
中:

   @Override
   public void onErrorResponse(VolleyError error) {
        Log.i("Volley error", error.toString()); //the error message
   }
   @Override
   public void onErrorResponse(VolleyError error) {
        Log.i("Volley error", error.toString()); //the error message
   }