2014-07-23 63 views
2

我是Robospice /改造庫的新手。我從github獲得了一些樣本。 https://github.com/octo-online/RoboSpice-samples/tree/release/robospice-sample-retrofitAndroid - 如何在Robospice /改造中獲取JSON格式請求和響應

我的理解:

的要求是 「githubRequest」 和響應是 「Contributor.List」。 web服務由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); 
    } 
} 

我的問題:我想從應用程序進行檢查,是否請求/響應( 「githubRequest」/ 「Contributor.List」)正確JSONs發送到服務。那麼如何sysout JSON請求和響應。但是請求/響應是POJO對象。但是,如果我想打印JSON請求和響應,我該怎麼做? 有人幫我做這個?

+0

的Android日誌的大小是有限的,所以如果你做一些大的要求,你可能無法看到一些特別的細節,你可能會感興趣。我個人使用查爾斯代理得到的請求/響應,它很容易設置: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您使用的庫(在這裏我使用Gson)序列化請求對象爲JSON並記錄到控制檯請求對象。

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

感謝您的回覆。我會檢查它。 – SKK

+0

這個工作適合你嗎? – MrEngineer13

0

我想你可以配置Retrofit以便在日誌中看到JSON請求和響應。

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

} 

}

相關問題