2014-07-23 4 views
2

Robospice/retrofit 라이브러리를 처음 사용했습니다. github에서 몇 가지 샘플을 얻었습니다. https://github.com/octo-online/RoboSpice-samples/tree/release/robospice-sample-retrofit.Android - Robospice/retrofit에서 JSON 형식 요청 및 응답을받는 방법

내 이해 :

요청이 "githubRequest"이고 응답이 "Contributor.List"입니다. 웹 서비스는 getSpiceManager(). execute에 의해 호출됩니다.

코드 조각 : 내 질문이

@Override 
     protected void onStart() { 
      super.onStart(); 
      getSpiceManager().execute(githubRequest, "github", DurationInMillis.ONE_MINUTE, new ListContributorRequestListener()); 
    } 

public final class ListContributorRequestListener implements RequestListener<Contributor.List> { 

    @Override 
    public void onRequestFailure(SpiceException spiceException) { 
     Toast.makeText(SampleSpiceActivity.this, "failure", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onRequestSuccess(final Contributor.List result) { 
     Toast.makeText(SampleSpiceActivity.this, "success", Toast.LENGTH_SHORT).show(); 
     updateContributors(result); 
    } 
} 

: 나는, 응용 프로그램에서 확인 할 올바른 JSONs이로 전송 요청/응답 ("githubRequest"/ "Contributor.List") 여부 서비스. 그렇다면 어떻게하면 JSON 요청 및 응답을 sysout 할 수 있을까요? 그러나 요청/응답은 POJO 객체입니다. 하지만 JSON 요청 및 응답을 인쇄하려면 어떻게해야합니까? 아무도 내가이 일을하도록 도와 줄 수 있습니까?

+0

안드로이드 로그의 크기가 제한됩니다, 그래서 당신은 몇 가지 큰 요청을하는 경우에 당신은 당신이에 관심이있을 수있는 몇 가지 특정 세부 사항을 볼 수 없습니다. 개인적으로는 요청을 얻기 위해 찰스 프록시를 사용/답변, 설치가 매우 쉽습니다. http://jaanus.com/blog/2012/02/12/debugging-http-on-an-android-phone-or-tablet-with-charles-proxy-for-fun- 및 이익 /. 어쩌면 그것은 당신을 위해서도 효과가있을 것입니다. –

+0

@Karolina Rusin : 방금 "githubRequest"에 두 개의 매개 변수를 보냈습니다. Robospice/retrofit 라이브러리를 사용할 때 JSON 요청/응답을받을 수 있습니까? – SKK

답변

11

응답 개체를 먼저 인쇄하려면 Callback<Object> cb을 통해 콜백 개체 유형을 Object 일반 유형으로 변경하십시오. 그런 다음 성공 콜백에서 Json 형식의 버전을 콘솔에 인쇄하기 위해 객체를 기록 할 수 있습니다.

@Override 
public void success(Object o, Response response) { 
    Log.i("Tag", "Login data " + o.toString()); 
} 

는 JSON에 요청 객체를 직렬화하고 콘솔에 그 로그 어떤 JSON 사용 라이브러리 (여기에 내가 Gson 사용하고 있습니다)를 사용할 수 있습니다 요청 객체를 인쇄합니다.

Log.i("Tag", "Login data " + new Gson().toJson(requestObject)); 
+0

응답 해 주셔서 감사합니다. 나는 그것을 검사 할 것이다. – SKK

+0

이 기능을 사용하셨습니까? – MrEngineer13

0

로그에서 JSON 요청 및 응답을 보려면 Retrofit을 구성 할 수 있다고 생각합니다.

public class RetrofitSpiceService extends RetrofitGsonSpiceService { 

private static final String BASE_URL = "http://your_url_here"; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    addRetrofitInterface(SomeService.class); 
} 

@Override 
protected String getServerUrl() { 
    return BASE_URL; 
} 

@Override 
protected Builder createRestAdapterBuilder() { 

    Gson gson = new GsonBuilder() 
      .create(); 

    return super.createRestAdapterBuilder() 
      .setLogLevel(RestAdapter.LogLevel.FULL) 
        // or .setLog(new AndroidLog("Retrofit")) 
      .setLog(new RestAdapter.Log() { 
       @Override 
       public void log(String msg) { 
        String[] blacklist = {"Access-Control", "Cache-Control", "Connection", "Content-Type", "Keep-Alive", "Pragma", "Server", "Vary", "X-Powered-By", 
          "Content-Length", "Set-Cookie", "OkHttp-Selected-Protocol", "OkHttp-Sent-Millis", "OkHttp-Received-Millis"}; 
        for (String bString : blacklist) { 
         if (msg.startsWith(bString)) { 
          return; 
         } 
        } 
        Log.d("Retrofit", msg); 
       } 
      }); 

} 

}