Retrofit2 - 无法从非空响应主体创建字符串

时间:2017-10-11 23:40:01

标签: java android retrofit2 httpresponse

我尝试进行API调用,然后将其作为字符串使用。到目前为止,我能够成功获取并记录响应...但是我尝试使用响应创建的字符串是空的,我不确定为什么会发生这种情况。

感谢任何建议:

  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

1 个答案:

答案 0 :(得分: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);
}