2016-08-09 20 views
5

Retrofit üzerinde çalışıyorum, ancak bir şeye takılıyorum: ham JSON'u yanıt gövdesine nasıl alabilirim? Ham Retrofit yanıt dizesi nasıl alınır?

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

Ama "menuitems" in

Ben JSON yanıtını almıyorum log, bu

MenuItems: Response :: [email protected] 

gibi bir şey geliyor lütfen benim posta yoluyla gidip bana çözüm önerin.

+0

ait kullanmayı deneyin().' Yerine 'gövde(). ToString()' dizesi()? – Salem

+0

Olası kopyası [Bir dizge döndürmek için OkHttp's response.body.toString() alınamıyor] (http://stackoverflow.com/questions/28300359/cant-get-okhttps-response-body-tostring-to-return -a-string) –

cevap

12

body().string() yerine `vücudu aramaya denediniz body().toString()

+0

hey teşekkürler işe yaradı –

+0

@Salem Bu dizede mevcut olan Json nesnesini ve Json dizilerini nasıl ayrıştırırım – Prabs

+0

@Prabs İstediğiniz herhangi bir kütüphaneyi kullanabilirsiniz: [gson] (https://github.com/google/ gson), Jackson veya varsayılan JSONObject: http://stackoverflow.com/a/9606629/1205368 – Salem

2

Call<JSONObject>'u kullanın. Bu şekilde, projenize retrofit converters'dan herhangi birini eklemeniz bile gerekmemektedir.

+0

Bu soruya tam olarak cevap vermiyor. Ayrıca, JSON'un serileştirilmesi gerçekten istese ne olurdu? –

+0

Doğru, sorunun cevabı olan “vücutta” görmedim. Bu hala geçerli olmakla birlikte, serileştirme için yanıt geri çağırma içinde herhangi bir yöntem kullanabilir, ancak çoğu zaman bunun en iyi fikir olmadığını kabul ediyorum. – maciekjanusz

İlgili konular