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

时间:2015-03-02 16:07:13

标签: java android rest callback retrofit

这是我的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
    }
};

问题:

<{1>}在callback我希望收到@POST中发布的ID,我应该怎么做?

我无法更改服务器API

2 个答案:

答案 0 :(得分:3)

要做到这一点,我们需要一个抽象类

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

        }

    }

答案 1 :(得分:2)

这很容易。您可以简单地使Callback保持请求的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"))