Retrofit2のレスポンスを文字列として取り出す方法です。
レスポンスは例えば以下のようなイメージです。
{“error_code”:”E100001000”,”messages”:[“僕はエラーメッセージだよ”]}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Call<ResponseBody> call = client.hoge(); Response<ResponseBody> response = call.execute(); if (response.isSuccessful()) { response.body().close(); } else { List<String> list = getErrorMessages(response.errorBody().string()); Objects.requireNonNull(getActivity()).runOnUiThread(() -> Toast.makeText(getContext(), list.get(0), Toast.LENGTH_LONG).show()); }
public static List<String> getErrorMessages(String errorBody) throws JSONException { JSONObject errorJson = new JSONObject(errorBody); String s = errorJson.getString("messages"); s = s.replace("[", "").replace("]", ""); String[] split = s.split(","); return Arrays.asList(split); }
|
replace周りで地味にハマってしまった、、