在Retrofit 2.0中
我知道Converter.Factory
中处理程序自定义Param Annotations的可能性。
但我可以在下面处理自定义方法注释,例如CustomAnnotation
:
@CustomAnnotation
@POST("someUrl")
Observable<MyResponse> doSomeThing(@Body body);
答案 0 :(得分:0)
我找到了一种方法,使用代理将服务创建包装为Retrofit:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://example.com/")
.build();
ApiService rawService = retrofit.create(ApiService.class);
ApiService service = (ApiService) Proxy.newProxyInstance(rawService.getClass().getClassLoader(),
rawService.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (method.getAnnotation(CustomAnnotation.class) != null){
//handler the Annotations
}
return method.invoke(rawService,args);
}
});