在改造中设置字段值
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 :这会将参数添加到所有请求,要将参数添加到特定请求,您可以创建一个常量并为这些请求传递该常量(使用包装方法)
是否可以在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 :这会将参数添加到所有请求,要将参数添加到特定请求,您可以创建一个常量并为这些请求传递该常量(使用包装方法)