Я просто изучаю Модернизацию и OKHttp, теперь у меня есть проблема. Каждый запрос в моем приложении является POST, так же, как это:Как добавить параметры по умолчанию с помощью Retrofit и OKHttp в каждом сообщении
@FormUrlEncoded
@POST("some url")
Observable<Result> getData(@Field("id") String id);
В каждом посте, есть два одинаковые PARAMS. Таким образом, самым простым способом я могу добавить еще два @Field в каждом методе, например, @Field («токен»), @ Field («account»). Но я думаю, что должен быть умный способ.
Тогда я подумал, что OkHttpClient может решить эту проблему.
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
RequestBody body = new FormBody.Builder().add("account", "me")
.add("token", "123456").build();
request = request.newBuilder().post(body).build();
return chain.proceed(request);
}
}).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("some base url")
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
Или
HttpUrl url = request.url().newBuilder()
.setEncodedQueryParameter("account", "me")
.setEncodedQueryParameter("token", "123456")
.build();
Первый метод просто заменить все поля в этих двух.
Второй способ просто добавить эти два параметра GET, а не POST.
Теперь у меня нет абсолютно никакой идеи, как сделать эту работу.