私はエラーをonErrorResponse
からアンドロイドのvolley
を使用して印刷したいと思います。separately
を別のtextview
に印刷したいとします。 onErrorResponse
アンドロイドでボレーを使用したエラー処理
{
"message": "422 Unprocessable Entity",
"error": {
"username": [
"The username has already been taken."
],
"email": [
"The email has already been taken."
]
},
"status_code": 422
}
から
私のエラーので、私は第二textview
に1 textview
でThe username has already been taken.
とThe email 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);
}
にエラーテキストを設定するにはRecyclerViewアダプタがわかりました...あなたのJSONをパースしてのTextViewを設定してください...問題は何ですか? –
私はこの質問に答えるつもりはありませんが、「名前フィールドは必須です」おそらくこれはクライアント側で行うべきでしょう。 '電子メールはすでに取られています.'これは問題ありません。 – Wizard
@Wizard、はいいいえ、私は "ユーザー名は既に取得されています"と印刷したい、電子メールはすでに取得されています。 – Dinesh