gpt4 book ai didi

java - 有没有办法设置一个基本请求参数以包含在使用 Square 的 Retrofit 库发出的每个请求中?

转载 作者:IT老高 更新时间:2023-10-28 21:17:51 26 4
gpt4 key购买 nike

我正在使用 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
);

必须为 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);

最佳答案

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

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)

关于java - 有没有办法设置一个基本请求参数以包含在使用 Square 的 Retrofit 库发出的每个请求中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com