1

OkHttp v3 以降では、OkHttpClient は不変であり、インターセプターのリストも同様です。

Retrofit 2.0-beta3 以降では、OkHttp v3 に依存します。

私のアプリでは、「a=1&b=2&c=3」形式の Google アナリティクス キャンペーン リファラー キーを解析し、それを追加してリクエスト URL にサインアップする必要があります。

以前のバージョンのレトロフィットでは、追加するだけで簡単に実行できました

retrofit.client().interceptors().add(0, chain -> {
    final Request httpRequest = chain.request();
    return chain.proceed(httpRequest.newBuilder().url(httpRequest.httpUrl().toString() + "&" + request.getUtmParams()).build());
});

呼び出しを実行する前に

retrofit.client().interceptors().remove(0);

コール後、続行します。

新しいバージョンで同じ動作を実現する方法がわかりません。助けてください。

UPD 1. 目標は、単一のリクエストのリクエスト URL を制御することです。最後に文字列を追加することは単なる例です。@QueryMap の使用はオプションですが、回避しようとしているパラメーター文字列の解析が必要です。

4

3 に答える 3

-2

リクエストの方法によって異なりますが、ここではGETを使用しています

// Map Query を使用して同じ結果を得ることもできます

public interface ApiService {

    @GET("api/{a}/{b}/{c}")
    Call<Login> authenticate(@Path("a") String a, @Path("b") String password, @Path("c") String c);
}

EntityObject を作成する

public EntityObject {

   Public String a;

   Public String b;

   Public String c;
}

レトロフィットを使用して、パラメーターを使用してリクエストを行います

private void makeRemoteRequest(String a, String b, String c){

  Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

 ApiInterface mService = retrofit.create(ApiService.class);

Call<Login> mService = mService.authenticate(a, b, c);
    mService.enqueue(new Callback<Login>() {
        @Override
        public void onResponse(Call<Login> call, Response<Login> response) {


        }

        @Override
        public void onFailure(Call<Login> call, Throwable t) {

        }
    });
}
于 2016-02-18T18:23:15.617 に答える