Retrofit添加header参数的几种方法。

来源:互联网 发布:简明医学统计学软件 编辑:程序博客网 时间:2024/05/22 03:06

(1)使用注解的方式

添加一个Header参数

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

添加多个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);}

(2)使用代码的方式,则需要使用拦截器

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

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

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



注意:以上都是在Retrofit2.0及以上使用的。

1 0
原创粉丝点击