При использовании шаблона Singleton для модификации2, как я могу генерировать различные заголовки с помощью перехватчика? - PullRequest
0 голосов
/ 17 января 2019

Я знаю, что могу использовать @Header для разных заголовков. Но когда я использую шаблон синглтона для модернизации, есть ли способ сделать разные заголовки для запросов с перехватчиком?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

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

 @GET("YourEndPoint")
    Call<YourClassName> YourFunctionName(@Header("Authorization") String accessToken) ;
0 голосов
/ 17 января 2019

Когда вы используете перехватчик для перехвата запроса, в методе перехвата вы можете написать следующее, чтобы добавить заголовки:

 Request originalRequest = chain.request();

    HttpUrl originalHttpUrl = originalRequest.url();
    HttpUrl newHttpUrl = originalHttpUrl.newBuilder()
            .build();

    Request newRequest = originalRequest.newBuilder()
            .addHeader(AppConstants.AUTHORIZATION, AppConstants.TOKEN)
            .addHeader(AppConstants.CONTENT_TYPE, AppConstants.APPLICATION_JSON)
            .addHeader(AppConstants.REQUESTED_WITH, AppConstants.XML_HTTP_REQUEST)
            .url(newHttpUrl)
            .build();

    return chain.proceed(newRequest);
}

Если вы хотите, чтобы заголовки добавлялись при каждом запросе, то вы можете сделать так:

@Headers({
    "Accept: application/json",
    "User-Agent: Your-App-Name",
    "Cache-Control: max-age=640000"
})
@GET(ApiConstants.GET_WORKER_DATA)
Call<ArrayList<Worker>> getWorkerData();
...