2017-10-11 7 views
0

Je tente d'effectuer un appel d'API puis d'utiliser sa réponse sous la forme d'une chaîne. Jusqu'à présent, je suis capable d'obtenir et d'enregistrer la réponse avec succès ... cependant, la chaîne que je tente de créer en utilisant la réponse est vide et je ne sais pas pourquoi cela pourrait se produire.Retrofit2 - Impossible de créer une chaîne à partir d'un corps de réponse non nul

Toutes les suggestions sont appréciés:

api.getUser().enqueue(new API.SimpleCallback<ResponseBody>() { 
     @Override 
     public void onResponse(ResponseBody data) { 
      try { 
       Log.d("RAW BODY", data.string()); 
        final SharedPreferences.Editor editor = App.sharedPrefs.edit(); 
        String responseString = data.string().toString(); 
        editor.putString(NOTIFICATION_PREFERENCES_ENABLED_STATUS,responseString); 
        editor.apply(); 


      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 

    }); 

enter image description here

Répondre

0

Le corps de la réponse peut être consommé qu'une seule fois. https://square.github.io/okhttp/3.x/okhttp/okhttp3/ResponseBody.html

Dans votre code, vous essayez de consommer le corps plusieurs fois. (une fois lorsque vous vous connectez, et une autre fois lorsque vous essayez de le mettre dans les préférences partagées).

faire quelque chose comme lieu:

@Override 
public void onResponse(ResponseBody responseBody) { 
    String data = responseBody.string(); 
    Log.d("RAW_DATA", data); 
    sharedPreferences.edit().putString(myKey, data); 
}