web-dev-qa-db-ja.com

レトロフィット2チェックコールURL

CallURLをRetrofit 2Stringと比較する可能性はありますか?

たとえば、次のbaseUrlを取ることができます。

https://www.google.com

そしてこれはCall

public interface ExampleService {
    @GET("dummy/{examplePartialUrl}/")
    Call<JsonObject> exampleList(@Path("examplePartialUrl") String examplePartialUrl;
}

このリクエストで:

Call<JsonObject> mCall = dummyService.exampleList("partialDummy")

呼び出しから応答を取得する前に、https://www.google.com/dummy/partialDummyまたはdummy/partialDummyを取得する方法はありますか?

10

Retrofitと一緒にOkHttpを使用しているとすると、次のようなことができます。

dummyService.exampleList("partialDummy").request().url().toString()

okHttpのドキュメントによると、これは次のように出力されます。

https://www.google.com/dummy/partialDummy

21
trevor-e

個人的には、レトロフィット2とRxJavaを使用してこれを実現する別の方法を見つけました

まず、OkHttpClientオブジェクトを作成する必要があります

private OkHttpClient provideOkHttpClient()
{
    //this is the part where you will see all the logs of retrofit requests 
    //and responses
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);

    return new OkHttpClient().newBuilder()
            .connectTimeout(500, TimeUnit.MILLISECONDS)
            .readTimeout(500,TimeUnit.MILLISECONDS)
            .addInterceptor(logging)
            .build();
}

このオブジェクトを作成したら、次のステップはレトロフィットビルダーで使用することです

public Retrofit provideRetrofit(OkHttpClient client, GsonConverterFactory convertorFactory,RxJava2CallAdapterFactory adapterFactory)
{
    return new Retrofit.Builder()
            .baseUrl(mBaseUrl)
            .addConverterFactory(convertorFactory)
            .addCallAdapterFactory(adapterFactory)
            .client(client)
            .build();
}

retrofit Builderに割り当てることができる属性の1つはクライアントであり、最初の関数からクライアントをクライアントに設定します。

このコードを実行した後、logcatでOkHttpタグを検索すると、行った要求と応答が表示されます。

1
Anton Makov
Log.d(TAG, "onResponse: ConfigurationListener::"+call.request().url());
1
Sunil Kumar