在改装回调中接收自定义参数

Receiving custom parameter in retrofit callback

这是我的 post :

@POST("/path")
@FormUrlEncoded
void postIt(@Field("id") String id , Callback<Response> response);

这是 Callback

 private Callback<Response> responseCallBack = new Callback<Response>() {
    @Override
    public void success(Response response, Response response2) {
        // get the id 
    }

    @Override
    public void failure(RetrofitError error) {
        // do some thing
    }
};

问题:

callback 我想接收在 @POST 发布的 ID,我应该怎么做?

而且我无法更改服务器 API

很简单。您可以简单地进行回调以保存请求的 ID 并每次都创建新的回调

class MyCallback extends Callback<Response> {
    private final String id;
    MyCallback(String id) {
        this.id = id
    }

    @Override
    public void success(Response response, Response response2) {
        // get the id 
    }

    @Override
    public void failure(RetrofitError error) {
        // do some thing
    }
}

所以当你调用服务时

myService.postIt("777", new MyCallback("777"))

为此我们需要一个摘要 class

abstract class CallBackWithArgument<T> implements Callback<T> {
    String arg;

    CallBackWithArgument(String arg) {
        this.arg = arg;
    }

    CallBackWithArgument() {
    }

并制作一个实例

new CallBackWithArgument<Response>(id) {
        @Override
        public void success(Response response, Response response2) {
            //do something

        }

        @Override
        public void failure(RetrofitError error) {
            //do something

        }

    }