Sto utilizzando Retrofit 2 (2.0.0-beta3) con il client OkHttp nell'applicazione Android e finora tutto sta andando alla grande. Ma attualmente sto affrontando un problema con OkHttp Interceptor. Il server con cui sto comunicando sta prendendo il token di accesso nel corpo della richiesta, quindi quando intercetto la richiesta di aggiungere il token auth o nel metodo di autenticazione Authenticator quando devo aggiungere il token di autenticazione aggiornato, devo modificare il corpo della richiesta per questo scopo . Ma sembra che io possa solo aggiungere dati nelle intestazioni ma non nel corpo della richiesta in corso. Il codice che ho scritto finora è come segue:Retrofit2: modifica del corpo della richiesta in OkHttp Interceptor
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (UserPreferences.ACCESS_TOKEN != null) {
// need to add this access token in request body as encoded form field instead of header
request = request.newBuilder()
.header("access_token", UserPreferences.ACCESS_TOKEN))
.method(request.method(), request.body())
.build();
}
Response response = chain.proceed(request);
return response;
}
});
Qualcuno mi può indicare la giusta direzione da come modificare richiesta corpo di aggiungere il mio token di accesso (prima volta o aggiornato dopo token di aggiornamento)? Qualsiasi puntatore alla giusta direzione sarebbe apprezzato.
sarebbe una buona idea per chiudere il buffer in 'bodyToString()' prima di tornare –
@ 3k quello non necessari, il buffer pretende allocare tutto ciò che può essere chiuso all'interno del costruttore. https://github.com/square/okio/blob/master/okio/src/main/java/okio/Buffer.java#L59 – Fabian