onErrorResponse
에서 내 오류를 인쇄하고 싶습니다. 을 다른 textview
에 인쇄하고 싶은데, 안드로이드에 volley
을 사용하고 있습니다. onErrorResponse
android에서 발리를 사용하여 오류 처리
{
"message": "422 Unprocessable Entity",
"error": {
"username": [
"The username has already been taken."
],
"email": [
"The email has already been taken."
]
},
"status_code": 422
}
에서
내 오류가 그래서 내가 2 textview
한 textview
및 The email has already been taken.
에서 The username has already been taken.
을 의미 , 별도로 인쇄 할. 감사
내 코드 :
public void postData(JSONObject jsonObject) {
String url = "http://www.xxxxxxxx.com/api/v1/auth/register";
String REQUEST_TAG = "volley_key";
JsonObjectRequest jsonObjectReq = new JsonObjectRequest(Request.Method.POST, url, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
verifyResponse(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
NetworkResponse networkResponse = error.networkResponse;
if (networkResponse != null && networkResponse.data != null) {
String errorStr = new String(networkResponse.data);
try {
JSONObject jObj = new JSONObject(errorStr);
JSONObject objError = jObj.getJSONObject("error");
JSONArray emailArray = objError.getJSONArray("email");
if (emailArray != null) {
String emailMessage = String.valueOf(emailArray.get(0));
Toast.makeText(getApplication(), emailMessage, Toast.LENGTH_LONG).show();
}
JSONArray usernameArray = objError.getJSONArray("username");
if (usernameArray != null) {
String usernameMessage = String.valueOf(emailArray.get(0));
Toast.makeText(getApplication(), usernameMessage, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}){
@Override
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;
}
}; VolleySingleton.getInstance(getApplicationContext()).addToRequestQueue(jsonObjectReq, REQUEST_TAG);
}
좋아 ... 구문 분석하여 JSON을 오류 텍스트를 설정하고 텍스트 뷰를 설정 ... 문제는 무엇입니까? –
나는이 질문에 답하고있는 것이 아니라 '이름 필드가 필요합니다.'아마도 이것은 클라이언트 측에서해야 할 것입니다. '이메일은 이미 가져갔습니다 .' 괜찮습니다. – Wizard
@Wizard, 예 좋습니다. "사용자 이름이 이미 사용되었습니다."라고 인쇄하고 싶습니다. 전자 메일은 이미 사용되었습니다. 감사합니다 – Dinesh