Retrofit 2.0 -custom converter...
아.. retrofit 2.0은 정보가 많이 없구나...
xml 이 제대로 된 형태가 아니라서 어쩔수 없이 일부 모델에 대해선 직접 파싱을 해야해서 어케어케 해보니 아래와 같이 하면 되더이다..
맞는 방법인지는 몰겠음 -_-;;
Retrofit.Builder builder = new Retrofit.Builder();
builder.baseUrl(baseUrl);
builder.addConverterFactory(new ConverterFactory());
public static class ConverterFactory extends Converter.Factory {
SimpleXmlConverterFactory defaultConverter;
public ConverterFactory() {
defaultConverter = SimpleXmlConverterFactory.create();
}
@Override
public Converter<?, RequestBody> toRequestBody(Type type, Annotation[] annotations) {
return defaultConverter.toRequestBody(type, annotations);
}
@Override
public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {
if (!(type instanceof Class)) {
return null;
}
Class<?> cls = (Class<?>) type;
if (cls == MyModel.class) {
return new MyModel.MyModelConverter();
}
return defaultConverter.fromResponseBody(type, annotations);
}
}
public class MyModel{
// has members..
public static class MyModelConverter implements Converter<ResponseBody, MyModel> {
@Override
public MenuList convert(ResponseBody value) throws IOException {
MyModel model = new MyModel();InputStream is = value.byteStream();
try {
InputNode read = NodeBuilder.read(is);// make model...
} catch (Exception e) {
e.printStackTrace();
} finally {
is.close();
}
return model ;
}
}
}