有没有一种方法来设置一个基本的请求参数包含在Square的Retrofit库中的每个请求中?

我正在使用Square的Retrofit库进行短暂的networking调用。 在每个请求中,我都包含@Query作为@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 ); 

必须为Interface概述的每个端点定义appVersiondeviceType是很麻烦的。 有没有办法设置每个请求应包含的基本参数集? 类似于我们如何设置通用Authorization 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); 

Solutions Collecting From Web of "有没有一种方法来设置一个基本的请求参数包含在Square的Retrofit库中的每个请求中?"

您可以通过向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)