2017-10-11 1 views
0

API 호출을 시도하고 응답을 문자열로 사용하려고합니다. 지금까지 나는 성공적으로 응답을 얻을 수 있었지만 ... 응답을 사용하여 만들려고 시도하는 문자열이 비어 있었고 이것이 왜 일어날 지 확신 할 수 없습니다.Retrofit2 - null이 아닌 응답 본문에서 문자열을 만들 수 없습니다.

모든 제안은 감사합니다 :

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

답변

0

응답 본체는 한 번만 소비 할 수 있습니다. https://square.github.io/okhttp/3.x/okhttp/okhttp3/ResponseBody.html

코드에서 본문을 여러 번 사용하려고합니다. (한번 로그인 할 때 한 번, 공유 환경 설정에 넣으려고 할 때).

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

대신 뭔가를 할

관련 문제