在改造中设置字段值

时间:2015-06-30 18:08:37

标签: java android rest interface retrofit

是否可以在Retrofit界面中设置字段值?例如,我的一个字段是命令的名称。

@FormUrlEncoded @POST("/main") void getUsers(
        @Field("command") String command,
        @Field("user_key") String userKey,
        ResponseCallback responseCallback
);

所以在这种情况下我设置了一个名为getUsers的函数,但是这需要我每次都传入“命令”名称函数。这是不必要的,因为每次调用此getUsers函数时,我都希望使用相同的命令值。

由于

2 个答案:

答案 0 :(得分:1)

您可以在RestAdapter类中为此函数创建一个包装器。 像这样的东西

public static void getUsers(String userKey, ResponseCallback callback) {
// call this api here 
API.getUsers(userKey, "defaultCammand", callback);
}

答案 1 :(得分:0)

您可以创建一个自定义RequestInterceptor,其中addEncodedQueryParam代表请求,此处为例:

RequestInterceptor requestInterceptor = new RequestInterceptor() {
  @Override
  public void intercept(RequestFacade request) {
    request.addEncodedQueryParam("command", "some command"); // this is the trick
  }
};

Retrofit retrofit = new Retrofit.Builder()
  .setEndpoint("https://api.github.com")
  .setRequestInterceptor(requestInterceptor) // don't forget to set the interceptor
  .build();

PS:这会将参数添加到所有请求中,将参数添加到特定的参数中以创建常量并为这些请求传递此常量(使用包装器方法)