在改造中设置字段值

Set field value in retrofit

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

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

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

谢谢

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

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

您可以创建一个自定义 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 :这会将参数添加到所有请求,要将参数添加到特定请求,您可以创建一个常量并为这些请求传递该常量(使用包装方法)