【问题标题】:Receiving custom parameter in retrofit callback在改造回调中接收自定义参数
【发布时间】:2015-03-02 16:07:12
【问题描述】:

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

【问题讨论】:

    标签: java android rest callback retrofit


    【解决方案1】:

    为此我们需要一个抽象类

    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
    
            }
    
        }
    

    【讨论】:

      【解决方案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"))
      

      【讨论】:

        猜你喜欢
        • 2018-12-20
        • 2018-04-06
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 2019-11-19
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        相关资源
        最近更新 更多