2017-10-11 187 views
0

我正在嘗試進行API調用,然後將其作爲響應用作字符串。到目前爲止,我能夠成功獲取並記錄響應......但是我嘗試使用響應創建的字符串是空的,我不確定爲什麼會發生這種情況。Retrofit2 - 無法從非空響應正文中創建字符串

任何建議都理解:

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); 
}