一:使用注解

1.1 添加一个Header参数

public interface UserService {  
@Headers("Cache-Control: max-age=640000")
@GET("/tasks")
Call<List<Task>> getTasks();
}

1.2 添加多个Header参数

public interface UserService {  
@Headers({
"Accept: application/vnd.yourapi.v1.full+json",
"User-Agent: Your-App-Name"
})
@GET("/tasks/{task_id}")
Call<Task> getTask(@Path("task_id") long taskId);
}

二:使用注解动态Header

使用注解的方式,但是Header参数每次提交的都不同,也就是动态的Header

public interface UserService {  
@GET("/tasks")
Call<List<Task>> getTasks(@Header("Content-Range") String contentRange);
}

 


三:使用代码的方式需要使用拦截器

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();  
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request original = chain.request();

Request request = original.newBuilder()
.header("User-Agent", "Your-App-Name")
.header("Accept", "application/vnd.yourapi.v1.full+json")
.method(original.method(), original.body())
.build();

return chain.proceed(request);
}
}

OkHttpClient client = httpClient.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();