Réaménagement – intercepte les réponses à l'échelle mondiale

J'aimerais intercepter toutes les réponses reçues par le moteur de rééquipement et rechercher le code d'erreur HTTP, par exemple erreur 403.

Je suis conscient que je peux utiliser le rappel d'échec (rétrofitError error) de chaque requête et vérifier les 403 mais j'aimerais enrouler la réponse à l'échelle mondiale.

  • Approches de l'erreur d'incompatibilité d'état de MediaPlayer d'Android sur isPlaying ()?
  • La boucle Android MediaPlayer a des lacunes même avec le format OGG
  • Android Combien d'espace est gratuit sur la carte SD?
  • Voulez-vous créer un plugin dans Cocos2d pour mon SDK
  • Fragments diététiques pour différentes orientations
  • Test de robotiste d'interface Android avec Teamcity
  • Je peux voir que l'interception de la demande est possible, mais je ne vois pas une option similaire pour la réponse.

    Aucune suggestion?

  • Comment obtenir des informations bitmap, puis décoder le bitmap de internet-inputStream?
  • Activité de démarrage avec Button Android
  • Ajouter un en-tête / pied de page dans une liste dans xml
  • Android: comment générer une fréquence?
  • Télécharger la vidéo avec le jeu
  • Obtenir IMSI à partir d'un téléphone Android?
  • 2 Solutions collect form web for “Réaménagement – intercepte les réponses à l'échelle mondiale”

    J'ai pu l'accomplir en ajoutant un intercepteur à OkHttpClient que la rénovation utilise.

    public class ForbiddenInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); Response response = chain.proceed(request); if (response.code() == 403) { doStuff(); } return response; } } OkHttpClient okHttpClient = Utils.createUnsafeOkHttpClient(); okHttpClient.interceptors().add(new ForbiddenInterceptor()); RestAdapter.Builder restAdapterBuilder = new RestAdapter.Builder() .setEndpoint(API_BASE_URL) .setClient(new OkClient(okHttpClient)); 

    Une autre possibilité est de remplacer la méthode d' execute dans OkClient de OkClient . Dans mon cas, je cherchais un en-tête de réponse spécifique, donc c'était quelque chose comme ça:

     OkClient client = new OkClient(okHttpClient) { @Override public retrofit.client.Response execute(retrofit.client.Request request) throws IOException { retrofit.client.Response response = super.execute(request); // Do whatever with 'response', such as looking for the value of a particular header: List<retrofit.client.Header> headers = response.getHeaders(); for (retrofit.client.Header header : headers) { if (MY_HEADER.equalsIgnoreCase(header.getName())) { this.savedValue = header.getValue(); break; } } return response; } }; RestAdapter.Builder restAdapterBuilder = new RestAdapter.Builder() .setEndpoint(API_BASE_URL) .setClient(client); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.