有没有办法设置一个基本请求参数,以包含在Square的改造库发出的每个请求中?

2022-09-01 18:28:02

我正在使用Square的改造库进行短暂的网络调用。我在每个请求中都包含一些数据作为参数。这样:@Query

@GET("/thingOne.php")
void thingOne(
        @Query("app_version") String appVersion,
        @Query("device_type") String deviceType,
        Callback<Map<String,Object>> callback
);

@GET("/thingTwo.php")
void thingTwo(
        @Query("app_version") String appVersion,
        @Query("device_type") String deviceType,
        Callback<Map<String,Object>> callback
);

必须为 中列出的每个端点定义和定义很麻烦。有没有办法设置一组基本参数,这些参数应该包含在每个请求中?类似于我们如何设置一个共同点?appVersiondeviceTypeInterfaceAuthorization Header

RestAdapter restAdapter = new RestAdapter.Builder()
    .setServer("...")
    .setRequestHeaders(new RequestHeaders() {
        @Override
        public List<Header> get() {
            List<Header> headers = new ArrayList<Header>();
                Header authHeader = new Header(
                    "Authorization", "Bearer " + token);
                headers.add(authHeader);
            }
            return headers;
        }
    })
    .build();
this.service = restAdapter.create(ClientInterface.class);

答案 1

您可以通过向 RestAdapter 添加自定义 RequestInterceptor 来确保所有请求都具有这些查询参数

RequestInterceptor requestInterceptor = new RequestInterceptor()
{
    @Override
    public void intercept(RequestFacade request) {
        request.addQueryParam("app_version", "Version 1.x");
        request.addQueryParam("device_type", "Samsung S4");
    }
};

restAdapter.setRequestInterceptor(requestInterceptor)

答案 2

推荐