Jack BeNimble Jack BeNimble - 2 years ago 149
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 {

@Headers({
"Connection: close"
})

@GET("/{userId}/{itemId}/getCost.do")
public void get(@Path("userId") String userId, @Path("itemId") String userId, Callback<Score> callback);


//....etc

}


Service which uses generated client:

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


@Inject
MyApiClient myApiClient;

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

@Override
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.

BASIC
Log only the request method and URL and the response status code and execution time.
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download