Как сделать новый звонок с Retrofit2? - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время я работаю с Retrofit2, и мне было интересно, как лучше сделать новый звонок.

В моем текущем приложении есть служба, которая реализует шаблон синглтона:

public final class Services
{

  private static volatile Services instance;

  public static Services getInstance()
  {
    if (instance == null)
    {
      synchronized (Services.class)
      {
        if (instance == null)
        {
          instance = new Services();
        }
      }
    }

    return instance;
  }

  private final IServices myServices;

  public Services()
  {
    final Retrofit.Builder retrofitBuilder = new Retrofit.Builder();
    retrofitBuilder.client(new OkHttpClient.Builder().build());

    myServices = retrofitBuilder.build().create(IServices.class);
  }

  public void myCall(@NonNull String param)
  {
    //...
  }

}

В метод myCall я звоню, например: myServices.aGetRequest(param).execute();

Теперь я хотел бы, например, изменить запрос (например, добавить несколько заголовков), но без перехватчика и сделать вызов. Какой самый лучший способ?

Из интерфейса IServices у меня нет доступа к okhttp3.Call.Factory для вызова newCall. Но у меня есть этот доступ из класса Retrofit с помощью метода callFactory.

Является ли хорошим способом сохранить ссылку на классы IServices и Retrofit на класс Services, чтобы сделать что-то подобное в методе myCall?

public void myCall(@NonNull String param)
{
  retrofit.callFactory().newCall(myServices.aGetRequest(param).request().newBuilder().addHeader("MY_HEADER_KEY", "MY_HEADER_VALUE").build()).execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...