一、使用注解
1. 添加单个header
public interface ApiService {
@Headers("Content-Type: application/javascript")
@GET("/data")
Call<List<AddressBean>> getData();
}
2. 添加多个header
public interface ApiService {
@Headers({
"Content-Type: application/javascript",
"User-Agent: YourAgent"
})
@GET("/data/{user_id}")
Call<List<AddressBean>> getData();
}
3. 动态添加header
public interface ApiService {
@GET("/data")
Call<List<AddressBean>> getData(@Header("Content-Range") String contentRange);
}
4. 动态添加多个header
@GET("/search")
Call<ResponseBody> list(@HeaderMap Map<String, String> headers);
1. Post添加单个header
@POST("api/sys/getPermissions")
Observable<ResponseBean<PermissionsBean>> getPermissions(@Query("__token") String token);
2.post添加固定的多个header
@POST("api/sys/getPermissions")
@Headers({"Content-Type:application/x-www-form-urlencoded",
"Authorization:Basic VmJyZjJNU1FxejhBVlhzMmajhETkJV"})
Observable<TokenBean> getSsoToken();
二、如果要添加全局header,则需要在代码中添加header
/**
* 请求拦截器
*/
private class RequestInterceptor implements Interceptor {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request oldRequest = chain.request();
Request request = oldRequest.newBuilder()
.headers(Headers.of(getHeaders()))//注入头信息
.build();
logRequest(request);
return logResponse(chain.proceed(request));
}
}
/**
* 获取头信息
*/
private Map<String, String> getHeaders() {
HashMap<String, String> headersMap = new HashMap<>();
headersMap.put("Cookie","jeeplus.session.id");
return headersMap;
}