RetrofitとOKHttpを学習しています。問題が発生しました。 私のアプリのすべての要求はちょうどこのように、POSTです:すべてのPOSTで投稿ごとにRetrofitとOKHttpを使用してデフォルトのパラメータを追加する方法
@FormUrlEncoded
@POST("some url")
Observable<Result> getData(@Field("id") String id);
、2つの同じparamsがあります。したがって、最も単純な方法では、@Field( "token")、@ Field( "account")など、すべてのメソッドに@Fieldを2つ追加できます。しかし、私はスマートな方法がなければならないと思う。
次に、私は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();
ちょうどこの二つにすべてのフィールドを交換する第一の方法。
2番目の方法は、POSTではなく、GETパラメータとしてこれら2つを追加するだけです。
今、私はこの作業をどのようにするかについて全く考えていません。