How to define a Header to all request using Retrofit?
android, http-headers, java, rest, retrofit
Solution
Official document:
Headers that need to be added to every request can be specified using a RequestInterceptor. The following code creates a RequestInterceptor that will add a User-Agent header to every request.
RequestInterceptor requestInterceptor = new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("User-Agent", "Retrofit-Sample-App");
}
};
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.setRequestInterceptor(requestInterceptor)
.build();
Problem
I'm looking for a solution to define a unique Header to use in all requests. Today I use `@Header` to each request did pass like parameter but I want define only header that works in all requests without to need pass like a parameter, for example fixing this Header on my requests `@GET` and `@POST` Today I use this. Note that each request `@GET` I need define Header as parameter. ``` //interface @GET("/json.php") void getUsuarioLogin( @Header("Authorization") String token, @QueryMap Map<String, String> params, Callback<JsonElement> response ); //interface @GET("/json.php") void addUsuario( @Header("Authorization") String token, @QueryMap Map<String, String> params, Callback<JsonElement> response ); //using public void getUsuarioLogin(){ Map<String, String> params = new HashMap<String, String>(); params.put("email", "me@mydomain.com"); params.put("senha", ConvertStringToMD5.getMD5("mypassword")); RestAdapter adapter = new RestAdapter.Builder() .setLogLevel(RestAdapter.LogLevel.FULL) .setEndpoint(WebServiceURL.getBaseWebServiceURL()) .build(); UsuarioListener listener = adapter.create(UsuarioListener.class); listener.getUsuarioLogin( //header "Basic " + BasicAuthenticationRest.getBasicAuthentication(), params, new Callback<JsonElement>() { @Override public void success(JsonElement arg0, Response arg1) { Log.i("Usuario:", arg0.toString() + ""); } @Override public void failure(RetrofitError arg0) { Log.e("ERROR:", arg0.getLocalizedMessage()); } }); } //using public void addUsuario(){ Map<String, String> params = new HashMap<String, String>(); params.put("name", "Fernando"); params.put("lastName", "Paiva"); RestAdapter adapter = new RestAdapter.Builder() .setLogLevel(RestAdapter.LogLevel.FULL) .setEndpoint(WebServiceURL.getBaseWebServiceURL()) .build(); UsuarioListener listener = adapter.create(UsuarioListener.class); listener.addUsuario( //header "Basic " + BasicAuthenticationRest.getBasicAuthentication(), params, new Callback<JsonElement>() { @Override public void success(JsonElement arg0, Response arg1) { Log.i("Usuario:", arg0.toString() + ""); } @Override public void failure(RetrofitError arg0) { Log.e("ERROR:", arg0.getLocalizedMessage()); } }); } ```