2016-08-09 79 views
5

我正在改造,但我堅持一件事:我如何獲得響應正文的原始JSON。如何獲得一個原始的Retrofit響應字符串?

public interface ViewMenuItems { 
    @GET 
    Call<ResponseBody> listRepos(@Url String url); 
} 

ViewMenuItems viewMenuItems = ApiClient.getClient().create(ViewMenuItems.class); 
    Call<ResponseBody> responseBodyCall = viewMenuItems.listRepos(Webservices.MERCHANT + merchantId + Webservices.MENU_ITEMS_LASTMODIFIED); 

     responseBodyCall.enqueue(new Callback<ResponseBody>() { 
     @Override 
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { 
      Log.d("MenuItems", "Response :: " + response.body().toString()); 
     } 

     @Override 
     public void onFailure(Call<ResponseBody> call, Throwable t) { 
     Log.d("MenuItems", "Exception :: " + t.toString()); 
     } 
}); 

但在「的MenuItems」日誌,我沒有得到JSON響應,它的未來是這樣的

MenuItems: Response :: [email protected] 

敬請通過我的職位,並建議我一些解決方案。

+0

您曾經試圖調用'體()。字符串()',而不是'體()。的toString()'? – Salem

+0

可能重複的[不能得到OkHttp的response.body.toString()返回一個字符串](http://stackoverflow.com/questions/28300359/cant-get-okhttps-response-body-tostring-to-return -a-string) –

回答

12

嘗試使用body().string()代替body().toString()

+0

嘿感謝它的工作 –

+0

@Salem如何解析Json對象和存在於該字符串中的Json數組 – Prabs

+0

@Prabs您可以使用您選擇的任何庫:[gson](https://github.com/google/ gson),傑克遜甚至默認的JSONObject:http://stackoverflow.com/a/9606629/1205368 – Salem

2

使用Call<JSONObject>。這樣你甚至不需要在你的項目中包含任何retrofit converters

+0

這並不完全回答這個問題。另外,如果實際需要JSON的反序列化呢? –

+0

的確,我沒有發現問題的「響應身體」部分。雖然這仍然有效,但對於反序列化,可以使用響應回調中的任何方法,但我承認大部分時間並不是最好的想法。 – maciekjanusz

相關問題