A documentação do Retrofit 2 diz:
Cabeçalhos que precisam ser adicionados a cada solicitação podem ser especificados usando um interceptor OkHttp.
Isso pode ser feito facilmente usando a versão anterior, aqui está o controle de qualidade relacionado.
Mas, usando o retrofit 2, não consegui encontrar algo como setRequestInterceptor
ou setInterceptor
método que possa ser aplicado ao Retrofit.Builder
objeto.
Também parece que não há mais RequestInterceptor
no OkHttp . O documento de Retrofit nos remete ao Interceptor, que eu não entendia como usá-lo para esse fim.
Como posso fazer isso?
enqueue
não consigo ver os cabeçalhos padrão.new OkHttpClient.Builder()
vez disso, deve ser #new OkHttpClient()
A versão mais recente de atualização AQUI -> 2.1.0.
versão lambda:
versão longa e feia:
versão completa:
arquivo gradle (você precisa adicionar o interceptor de registro se planeja usá-lo):
fonte
Para registrar sua solicitação e resposta, você precisa de um interceptador e, também, para definir o cabeçalho, precisa de um interceptador. Aqui está a solução para adicionar o interceptador ao mesmo tempo usando o retrofit 2.1
Agora, no seu objeto de atualização, adicione este cabeçalho no cliente
fonte
Tente este cabeçalho de tipo para Retrofit 1.9 e 2.0. Para o tipo de conteúdo Json.
Você pode adicionar muito mais cabeçalhos, ou seja,
Adicionar dinamicamente aos cabeçalhos:
Chamá-lo de método ou seja
Ou
Deseja passar toda vez que criar o objeto HttpClient com o http Interceptor:
Em seguida, adicione ao objeto de atualização
UPDATE se você estiver usando o Kotlin, remova o
{ }
resto, ele não funcionaráfonte
No meu caso
addInterceptor()
, não funcionou para adicionar cabeçalhos HTTP à minha solicitação, eu tive que usaraddNetworkInterceptor()
. O código é o seguinte:E o código interceptador:
Este e mais exemplos nesta essência
fonte
Se você usar o método addInterceptor para adicionar HttpLoggingInterceptor, ele não registrará o que foi adicionado por outros interceptores aplicados posteriormente a HttpLoggingInterceptor.
Por exemplo: Se você tiver dois interceptores "HttpLoggingInterceptor" e "AuthInterceptor" e HttpLoggingInterceptor aplicados primeiro, não poderá visualizar os http-params ou cabeçalhos definidos pelo AuthInterceptor.
Eu o resolvi usando o método addNetworkInterceptor.
fonte
HttpLoggingInterceptor
como o último interceptador para ver a solicitação final.Use este cliente de atualização
Estou passando o JWT junto com todas as solicitações. Por favor, não se importe com os nomes das variáveis, é um pouco confuso.
fonte
No kotlin, adicionar interceptador é assim:
fonte
RetrofitHelper biblioteca , escrita em kotlin, permite fazer chamadas de API, usando algumas linhas de código.
Adicione cabeçalhos à sua classe de aplicativos desta maneira:
E depois faça sua ligação:
Para mais informações, consulte a documentação
fonte
Versão Kotlin seria
fonte