2016-08-09 6 views
5

Ich arbeite an Retrofit, aber ich bin auf eine Sache fest: wie bekomme ich die rohen JSON auf dem Antworttextkörper.Wie bekomme ich eine rohe Retrofit-Antwortzeichenfolge?

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

Aber in den „MenuItems“ log ich nicht die JSON-Antwort bin immer, es irgendeine Lösung so etwas wie dieses

MenuItems: Response :: [email protected] 

Bitte freundlich meine Post gehen und schlagen mir kommt.

+0

Haben Sie versucht, rufen 'Körper(). String()' statt 'Körper(). ToString()' zu benutzen? – Salem

+0

Mögliches Duplikat von [OkHttps response.body.toString() kann nicht zurückgegeben werden, um einen String zurückzugeben] (http://stackoverflow.com/questions/28300359/cant-get-okhttps-response-body-tostring-to-return -a-string) –

Antwort

12

Versuchen body().string() statt body().toString()

+0

hey danke es funktionierte –

+0

@Salem Wie analysiere ich das Json-Objekt und JSON-Arrays, die in dieser Zeichenfolge vorhanden sind – Prabs

+0

@ Prabs Sie können eine beliebige Bibliothek Ihrer Wahl verwenden: [http://github.com/google/ gson), Jackson oder sogar das Standard-JSONObject: http://Stackoverflow.com/a/9606629/1205368 – Salem

2

Verwenden Sie Call<JSONObject>. Auf diese Weise müssen Sie nicht einmal retrofit converters in Ihr Projekt einfügen.

+0

Das beantwortet die Frage nicht ganz. Was wäre, wenn die Deserialisierung des JSON tatsächlich gewünscht wäre? –

+0

Stimmt, ich habe den Teil "on response body" nicht gefunden. Obwohl dies immer noch gültig ist, kann man für die Deserialisierung jede Methode innerhalb des Antwort-Callbacks verwenden, obwohl ich zugeben muss, dass es meistens nicht die beste Idee ist. – maciekjanusz

Verwandte Themen