我可以在Retrofit 2.0中使用自定义方法注释吗?

时间:2016-07-19 14:00:13

标签: retrofit2

在Retrofit 2.0中

我知道Converter.Factory中处理程序自定义Param Annotations的可能性。

但我可以在下面处理自定义方法注释,例如CustomAnnotation

@CustomAnnotation
@POST("someUrl")
Observable<MyResponse> doSomeThing(@Body  body);

1 个答案:

答案 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);
                    }
                });