Jack BeNimble Jack BeNimble - 1 year ago 106
Android Question

Retrofit @GET - how to display request string?

I'm working on an Android application that uses Retrofit to create a restful client. In order to debug networks calls, I would like to display or dump the url that's actually being invoked. Is there a way to do this? I've included some code below which shows how the app currently using retrofit.

Client interface definition:

import retrofit.Callback;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.Headers;
import retrofit.http.POST;
import retrofit.http.Path;

// etc...

public interface MyApiClient {

"Connection: close"

public void get(@Path("userId") String userId, @Path("itemId") String userId, Callback<Score> callback);



Service which uses generated client:

// etc...
import javax.inject.Inject;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;

MyApiClient myApiClient;

// etc...
myApiClient.getCost(myId, itemId, new Callback<Cost>() {
public void success(Cost cost, Response response) {
Log.d("Success: %s", String.valueOf(cost.cost));
if (cost.cost != -1) {
} else {

public void failure(RetrofitError error) {
handleFailure(new CostFailedEvent(), null);

Answer Source

RetrofitError has a getUrl() method that returns the URL.

Also the Response has a getUrl() method as well within the callback.

That, and you can also specify the log level as per this question:

RestAdapter adapter = (new RestAdapter.Builder()).
           setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG"))              

Although based on the docs, LogLevel.BASIC should do what you need.

Log only the request method and URL and the response status code and execution time.