2016-08-09 3 views
5

Retrofit에서 작업하고 있지만 한 가지만 나와 있습니다. 응답 본문에서 원시 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()); 
     } 
}); 

그러나 "메뉴 아이템"에서

내가 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), Jackson 또는 기본 JSONObject : http://stackoverflow.com/a/9606629/1205368 – Salem

2

Call<JSONObject>을 사용하십시오. 그렇게하면 retrofit converters을 프로젝트에 포함 할 필요조차 없습니다.

+0

그 질문에는 답이 없습니다. 또한 JSON의 비 직렬화가 실제로 필요하다면 어떻게 될까요? –

+0

사실 나는 질문의 '응답 시체'부분을 발견하지 못했습니다. 이것은 여전히 ​​유효하지만 비 직렬화의 경우 응답 콜백 내부의 메소드를 사용할 수 있습니다. 대부분의 경우 이것이 최선의 방법은 아니라고 인정합니다. – maciekjanusz

관련 문제