Alf*_*sen 26 java networking android retrofit
我正在使用Square的Retrofit库进行短期网络调用.我@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
);
Run Code Online (Sandbox Code Playgroud)
必须定义appVersion
和deviceType
为每个端点中概述的每个端点都很麻烦Interface
.有没有办法设置每个请求应包含的基本参数集?类似于我们如何设置共同的东西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);
Run Code Online (Sandbox Code Playgroud)
Eri*_*ich 55
通过向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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8861 次 |
最近记录: |