【发布时间】:2017-04-05 10:47:05
【问题描述】:
我有一个来自服务器的通用响应:
{
"Error": null,
"Data": {}
}
}
所以我创建了一个自定义转换器工厂,只获取Data 中的对象。
主要思想是改变:
- 这个
Call<ResponseBase<List<Item>>> getItems(); - 到
Call<List<Item>> getItems();
它对响应很有效,但是当我尝试使用@Body发送请求和反对请求时,转换器崩溃了...
java.lang.IllegalArgumentException: Unable to create @Body converter for class <package>.data.entities.request.RequestLogin (parameter #1)
...
Caused by: java.lang.IllegalArgumentException: Could not locate RequestBody converter for class <package>.data.entities.request.RequestLogin.
Tried:
* retrofit2.BuiltInConverters
* <package>.data.api.ResponseConverterFactory
这是我的自定义Converter.Factory:
class ResponseConverterFactory extends Converter.Factory {
// constructor
@Override
public Converter<ResponseBody, ?> responseBodyConverter(final Type type, Annotation[] annotations, Retrofit retrofit) {
Type wrappedType = new ParameterizedType() {
@Override
public Type[] getActualTypeArguments() {
return new Type[] {type};
}
@Override
public Type getOwnerType() {
return null;
}
@Override
public Type getRawType() {
return ResponseBase.class; // GENERIC CLASS
}
};
Converter<ResponseBody, ?> converter = factory.responseBodyConverter(wrappedType, annotations, retrofit);
return new ResponseConverter(converter);
}
}
如何让它使用默认转换器进行请求序列化?
【问题讨论】: