Olá Alex,
Eu li com mais calma sobre o OkHttp é achei a solução para o que eu quero, pois o que desejo era enviar um parâmetro no header da requisição que é 1 token e envia-lo ao servidor para validar. Veja a solição:
public class RetrofitInicializador {
private final Retrofit retrofit;
private static final String ENDERECO_SERVIDOR="http://MEU-IP:8080/contexto/web/";
private LoginDTO loginDTO;
public RetrofitInicializador(LoginDTO dto) {
loginDTO = dto;
retrofit = new Retrofit.Builder().baseUrl(ENDERECO_SERVIDOR).addConverterFactory(GsonConverterFactory.create())
.client(aplicarInterceptor())
.build();
}
private OkHttpClient aplicarInterceptor(){
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new HeaderInterceptor(loginDTO))
.build();
return client;
}
public LoginService getLoginService(){
return retrofit.create(LoginService.class);
}
}
Na Classe acima é criado a instancia do OKHttpClient e nele é adicionado o interceptor e o retorno e o mesmo é informado ao retrofit.
Abaixo segue o Interceptor
public class HeaderInterceptor implements Interceptor {
private LoginDTO loginDTO;
private static final String HEADER_AUTORIZACAO="Authorization";
private static final String TIPO_TOKEN="MeuTOKEN ";
public HeaderInterceptor(LoginDTO dto) {
loginDTO=dto;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request requisicao=chain.request();
Request.Builder construtorRequisicao=requisicao.newBuilder();
if (loginDTO.getLogin()!=null && loginDTO.getSenha()!=null) {
construtorRequisicao.addHeader(HEADER_AUTORIZACAO, "Basic " + encripta(loginDTO.getLogin(), loginDTO.getSenha()));
Log.i("RETROFI-HEAD","BASIC-AUTH");
}else{
construtorRequisicao.addHeader(HEADER_AUTORIZACAO,TIPO_TOKEN +loginDTO.getToken());
Log.i("RETROFI-HEAD","JWT-AUTH");
}
Request novaRequisicao=construtorRequisicao.build();
return chain.proceed(novaRequisicao);
}
private String encripta(String username, String password) {
String userPassword = username + ":" + password;
String encoding=new String(Base64.encode(userPassword.getBytes()));
return encoding;
}
public static String extratirTokenAutorizacao(Headers headers){
return headers.get(HEADER_AUTORIZACAO).substring(TIPO_TOKEN.length());
}
}