是否可以在Retrofit界面中设置字段值?例如,我的一个字段是命令的名称。
@FormUrlEncoded @POST("/main") void getUsers(
@Field("command") String command,
@Field("user_key") String userKey,
ResponseCallback responseCallback
);
所以在这种情况下我设置了一个名为getUsers的函数,但是这需要我每次都传入“命令”名称函数。这是不必要的,因为每次调用此getUsers函数时,我都希望使用相同的命令值。
由于
答案 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:这会将参数添加到所有请求中,将参数添加到特定的参数中以创建常量并为这些请求传递此常量(使用包装器方法)