2016-05-30 62 views
3
public abstract class RetrofitBaseCallBack<T> implements Callback<T> { 
    @Override 
    public void onResponse(Call<T> call, Response<T> response) { 
     int responseCode = response.code(); 
     if (responseCode == Constants.ServerResponse.Code.STATUS_OK 
       || responseCode == Constants.ServerResponse.Code.STATUS_CREATED_SUCCESS 
       || responseCode == Constants.ServerResponse.Code.STATUS_IN_PROGRESS 
       || responseCode == Constants.ServerResponse.Code.STATUS_NO_CONTENT 
       || responseCode == Constants.ServerResponse.Code.STATUS_ACCEPTED) { 
      // i want to navigate to onResponseSuccess when "success":true 
      onResponseSuccess(call, response); 
     } else { 
      //i want to navigate to onResponseFailure when "success":false 
      onErrorResponse(call, response); 
     } 
    } 
    } 

    @Override 
    public void onFailure(Call<T> call, Throwable t) { 
     onRetrofitBaseCallBackFailure(call, t); 
    } 

    public abstract void onResponseSuccess(Call<T> call, Response<T> response); 

    public abstract void onResponseFailure(Call<T> call, Response response, String message); 

    public abstract void onRetrofitBaseCallBackFailure(Call<T> call, Throwable t); 
} 

我已经通过扩展改造回调来创建类。我想解析字符串的响应。在我的例子中,每个响应都会得到这种类型的JSON对象。在成功响应的情况下:如何将改造响应正文转换为JsonObject

{ 
    "success": true, 
    "abc": { 
    "a": 0.15, 
    "b": "Better Exchange Rate", 
    } 
} 

在失败响应的情况下

{ 
     "success": false, 
     "abc": { 
     "a": 0.15, 
     "b": "Better Exchange Rate", 
     } 
    } 

我怎么能转换响应主体为JSONObject的,这样我可以检查现场“成功”:和浏览相应的方法即onResponseSuccess(呼叫呼叫,响应响应)成功的情况下,onResponseFailure(呼叫呼叫,响应响应,字符串消息)在发生故障的情况下

回答

0

如何从response.body()中获取JSONObject进行改进:

try { 

    JSONObject jsonObj = new JSONObject(response.body().toString()); 

} catch (JSONException e) { 

    e.printStackTrace(); 
    Log.d("TAG", "No valid json"); 

}