Android 截击的自定义错误响应
我在Android Studio中有一个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>
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
}