Não consigo encontrar métodos relevantes na API Retrofit para registrar os organismos completos de solicitação / resposta. Eu estava esperando alguma ajuda no Profiler (mas ele oferece apenas metadados sobre resposta). Tentei definir o nível de log no Builder, mas isso também não me ajuda:
RestAdapter adapter = (new RestAdapter.Builder()).
setEndpoint(baseUrl).
setRequestInterceptor(interceptor).
setProfiler(profiler).
setClient(client).
setExecutors(MyApplication.getWebServiceThreadPool()).
setLogLevel(LogLevel.FULL).
setLog(new RestAdapter.Log() {
@Override
public void log(String msg) {
Log.i(TAG, msg);
}
}).
build();
EDIT: Este código está funcionando agora. Não sei por que não estava funcionando antes. Possivelmente porque eu estava usando uma versão mais antiga do retrofit.
FULL
deve dar ao corpo, mas não parece.Respostas:
Eu costumava
setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG"))
, isso me ajudou.ATUALIZAR.
Você também pode tentar usar para fins de depuração
retrofit.client.Response
como modelo de respostafonte
AndroidLog
, que classe é essa?response body
arquivo, embora exista no documento queLogLevel.FULL
deve fornecer o arquivoresponse body
.Retrofit 2.0 :
ATUALIZAÇÃO: @by Marcus Pöhls
Fazendo logon no Retrofit 2
O Retrofit 2 depende completamente do OkHttp para qualquer operação de rede. Como o OkHttp é uma dependência de pares do Retrofit 2, você não precisará adicionar uma dependência adicional depois que o Retrofit 2 for lançado como uma versão estável.
O OkHttp 2.6.0 é fornecido com um interceptor de registro como uma dependência interna e você pode usá-lo diretamente para o seu cliente Retrofit. O Retrofit 2.0.0-beta2 ainda usa o OkHttp 2.5.0. Versões futuras aumentarão a dependência para versões superiores do OkHttp. É por isso que você precisa importar manualmente o interceptador de log. Inclua a seguinte linha nas importações de gradle dentro do arquivo build.gradle para buscar a dependência do interceptador de criação de log.
Você também pode visitar a página do GitHub da Square sobre esse interceptador
Adicionar registro ao retrofit 2
Ao desenvolver seu aplicativo e para fins de depuração, é bom ter um recurso de log integrado para mostrar informações de solicitação e resposta. Como o log não está mais integrado por padrão no Retrofit 2, precisamos adicionar um interceptador de log para o OkHttp. Felizmente, o OkHttp já vem com esse interceptador e você só precisa ativá-lo para o seu OkHttpClient.
Recomendamos adicionar o log como o último interceptador, pois isso também registrará as informações que você adicionou com interceptores anteriores à sua solicitação.
Níveis de log
Registrar muitas informações explodirá seu monitor Android; é por isso que o interceptador de log do OkHttp possui quatro níveis de log: NENHUM, BÁSICO, CABEÇALHOS, CORPO. Orientaremos você em cada um dos níveis de log e descreveremos sua saída.
Para obter mais informações, visite: Retrofit 2 - Solicitações e respostas de log
RESPOSTA ANTIGA:
não é mais necessário fazer login no Retrofit 2. A equipe de desenvolvimento removeu o recurso de log. Para ser sincero, o recurso de registro não era tão confiável assim mesmo. Jake Wharton afirmou explicitamente que as mensagens ou objetos registrados são os valores assumidos e não podem ser provados como verdadeiros. A solicitação real que chega ao servidor pode ter um corpo de solicitação alterado ou outra coisa.
Mesmo que não haja registro integrado por padrão, você pode aproveitar qualquer criador de logs Java e usá-lo em um interceptor OkHttp personalizado.
Para obter mais informações sobre o Retrofit 2, consulte: Retrofit - Introdução e crie um cliente Android
fonte
Atualização para Retrofit 2.0.0-beta3
Agora você precisa usar o okhttp3 com o construtor. Além disso, o interceptador antigo não funcionará. Esta resposta é personalizada para Android.
Aqui está uma pasta de cópia rápida para você com as novidades.
1. Modifique seu arquivo gradle para
2. Verifique este código de exemplo:
com as novas importações. Você pode remover o Rx se não o usar. Também remova o que não usa.
Bônus
Eu sei que é offtopic, mas acho legal.
Caso exista um código de erro http não autorizado , aqui está um interceptador. Eu uso o eventbus para transmitir o evento.
código é obtido em https://github.com/AndreiD/UltimateAndroidTemplateRx (meu projeto).
fonte
Não parece haver uma maneira de fazer body + básico, mas você pode usar CHEIO e filtrar os cabeçalhos que não deseja.
Parece que, ao substituir o log, o corpo é prefixado com uma tag semelhante a
portanto, deve ser fácil registrar o básico + corpo ajustando o filtro personalizado. Estou usando uma lista negra, mas uma lista de permissões também pode ser usada dependendo de suas necessidades.
fonte
o código abaixo está funcionando para cabeçalho e sem cabeçalho para imprimir solicitação e resposta de log. Nota: Apenas comente a linha .addHeader () se não estiver usando o cabeçalho.
fonte
Espero que este código o ajude a fazer logon.
você só precisa adicionar interceptador no seu
Build.Gradle
makeRetrofitClient
.Primeiro passo
Adicione esta linha ao seu
build.gradle
Segundo passo
Faça seu cliente Retrofit
Chamando
fonte
Se você estiver usando Retrofit2 e okhttp3, precisará saber que o Interceptor funciona por fila. Portanto, adicione loggingInterceptor no final, após seus outros interceptadores:
fonte
O ZoomX - Android Logger Interceptor é um ótimo interceptador que pode ajudá-lo a resolver seu problema.
fonte
Para o android studio anterior ao 3.0 (usando o android motinor)
https://futurestud.io/tutorials/retrofit-2-log-requests-and-responses
https://www.youtube.com/watch?v=vazLpzE5y9M
E para o android studio a partir de 3.0 e superior (usando o Android Profiler como monitor do Android é substituído pelo Android Profiler)
https://futurestud.io/tutorials/retrofit-2-analyze-network-traffic-with-android-studio-profiler
fonte