RetrofitのError時のResponseがParseできない
今日の実装箇所は、1つのエラーコードに対しエラーが3つ以上存在するということで、 どうしてもレスポンスボディが欲しかったのですが、RetrofitのError時のResponseが うまくParseできなくて詰まってました。
上の記事を参考にして、
// error is RetrofitError String json = new String(((TypedByteArray)error.getResponse().getBody()).getBytes()); // Person is some parse class for GSon Gson gson = new Gson(); Person person = gson.from(json, Person.class);
みたいにすると、成功時と同じように扱えます。
しかしこれ、ConverterにGson指定して、 成功時の返り値に指定しているクラスを手動でGsonのインスタンスに突っ込んでるのと同じことでは...。
GC: TypedByteArray - retrofit.mime.TypedByteArray (.java) - GrepCode Class Source
TypedByteArray、コードとしては、この辺なのだけど、変換先のクラスが不定なのでデータはStream状でしまってあり、ひよっこからするとどう取り出したら良いものやら、という話だったような気がする。
一旦Streamの形かBytes列で取り出してからStringなり元のResponseとおぼしき型にする、みたいに見えるけれど...今日はここまで。。