Call
URLをRetrofit 2
のString
と比較する可能性はありますか?
たとえば、次の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
を取得する方法はありますか?
Retrofitと一緒にOkHttpを使用しているとすると、次のようなことができます。
dummyService.exampleList("partialDummy").request().url().toString()
okHttpのドキュメントによると、これは次のように出力されます。
https://www.google.com/dummy/partialDummy
個人的には、レトロフィット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タグを検索すると、行った要求と応答が表示されます。
Log.d(TAG, "onResponse: ConfigurationListener::"+call.request().url());