Выполнить сервис с модернизацией 2, отправив данные в заголовок - PullRequest
0 голосов
/ 16 ноября 2018

Я учусь использовать модернизацию, использовать веб-сервисы, у меня нет проблем с выполнением методов @GET, @POST, но теперь мне нужно выполнить сервис, куда отправляется токен, я действительно не знаю, как это сделать , но я использую POSTMAN, где этот токен поля отправляю из заголовков в ключ авторизации. Я видел другие примеры, где используется OkHttpClient, но я не могу придумать, как это реализовать.

Так что я выполняю свою службу с модификацией, к этому же ему должен быть отправлен токен в голове.

@GET(Constants.Retrofit.SURE_DO_YOU_LIKE_PRODUCTS)
    Call<List<RelatedProducts>> getProductSureDoYouLike();

и это мой сервис в POSTMAN.

enter image description here

1 Ответ

0 голосов
/ 16 ноября 2018

Например:

@GET(Constants.Retrofit.SURE_DO_YOU_LIKE_PRODUCTS)
Call<List<RelatedProducts>> getProductSureDoYouLike(@Header("Content-Type") String contentType, @Header("Authorization") String auth);

Если для всех запросов требуется Content-Type, вы можете изменить свой Retrofit строитель, добавив заголовок в каждый запрос:

OkHttpClient client;// = new OkHttpClient();

OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(5, TimeUnit.MINUTES)
                .writeTimeout(5, TimeUnit.MINUTES)
                .readTimeout(5, TimeUnit.MINUTES)
                .addInterceptor(chain -> {
                    Request request = chain.request().newBuilder()

                   //Add this to include header in every request
                   .addHeader("Content-Type", "application/json").build(); 
                    return chain.proceed(request);
                }).build();

        client = builder.build();

        retrofit = new Retrofit.Builder()
                .baseUrl(NetworkConstants.BASE_URL)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

Тогда вашзапрос будет:

@GET(Constants.Retrofit.SURE_DO_YOU_LIKE_PRODUCTS)
Call<List<RelatedProducts>> getProductSureDoYouLike(@Header("Authorization") String auth);

Вы бы тогда позвонили так:

apiService.getProductSureDoYouLike("token");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...