Retrofit2.0添加Header的方法總結(jié)(推薦)
最近在項(xiàng)目里面需要添加header,然后就想大家分想一下retrofit添加header的方法
(1)使用注解的方式添加一個(gè)header參數(shù)
public interface ApiService { @Headers("Cache-Control: max-age=560000") @GET("/data") Call<List<Data>> getData(); }
(2)使用注解的方式添加多個(gè)header參數(shù)
public interface ApiService { @Headers({ "Accept: application/vnd.yourapi.v1.full+json", "User-Agent: YourAppName" }) @GET("/data/{user_id}") Call<Data> getData(@Path("user_id") long userId); }
(3)使用注解的方式,header參數(shù)每次都不同,動(dòng)態(tài)添加header
public interface ApiService { @GET("/data") Call<List<Data>> getData(@Header("Content-Range") String contentRange); }
(4)在代碼里添加header,需要使用攔截器
OkHttpClient.Builder client = new OkHttpClient.Builder(); client.addInterceptor(new Interceptor() { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request original = chain.request(); Request request = original.newBuilder() .header("User-Agent", "YourAppName") .header("Accept", "application/vnd.yourapi.v1.full+json") .method(original.method(), original.body()) .build(); return chain.proceed(request); } } OkHttpClient httpClient = client.build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constant.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .client(httpClient) .build();
其實(shí)我們看上面的addInterceptor方法好像是并列的,至于哪個(gè)攔截器在前,哪個(gè)在后,應(yīng)該無所謂。但是事實(shí)是,如果吧mHttpLoggingInterceptor放前面,則后面的interceptor添加的heanders將不會(huì)生效。當(dāng)我們使用addInterceptor來添加網(wǎng)絡(luò)攔截器時(shí),一定要把網(wǎng)絡(luò)攔截器放前面。
使用addNetworkInterceptor
當(dāng)我們使用網(wǎng)絡(luò)請求方面的攔截器時(shí),直接使用addNetworkInterceptor方法來添加,而不要使用addInterceptor來添加。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android單點(diǎn)觸控實(shí)現(xiàn)圖片平移、縮放、旋轉(zhuǎn)功能
這篇文章主要介紹了Android單點(diǎn)觸控實(shí)現(xiàn)圖片平移、縮放、旋轉(zhuǎn)功能的相關(guān)資料,需要的朋友可以參考下2016-02-02開箱即用的Google與百度定位坐標(biāo)系轉(zhuǎn)換實(shí)例
這篇文章主要為大家介紹了開箱即用的Google與百度定位坐標(biāo)系轉(zhuǎn)換實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08基于Android實(shí)現(xiàn)點(diǎn)擊某個(gè)按鈕讓菜單選項(xiàng)從按鈕周圍指定位置彈出
這篇文章主要介紹了基于Android實(shí)現(xiàn)點(diǎn)擊某個(gè)按鈕讓菜單選項(xiàng)從按鈕周圍指定位置彈出的相關(guān)資料,需要的朋友可以參考下2015-12-12Flutter實(shí)現(xiàn)頁面切換后保持原頁面狀態(tài)的3種方法
這篇文章主要給大家介紹了關(guān)于Flutter實(shí)現(xiàn)頁面切換后保持原頁面狀態(tài)的3種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Android編程實(shí)現(xiàn)帶有圖標(biāo)的ListView并帶有長按菜單效果示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)帶有圖標(biāo)的ListView并帶有長按菜單效果,結(jié)合實(shí)例形式分析了Android帶圖標(biāo)的ListView及菜單功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06Flutter 實(shí)現(xiàn)進(jìn)度條效果
在一些上傳頁面炫酷的進(jìn)度條效果都是怎么實(shí)現(xiàn)的,今天小編通過本文給大家分享Flutter 一行代碼快速實(shí)現(xiàn)你的進(jìn)度條效果,感興趣的朋友一起看看吧2020-05-05Flutter有狀態(tài)組件StatefulWidget生命周期詳解
這篇文章主要為大家介紹了Flutter有狀態(tài)組件StatefulWidget生命周期詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Unity3D游戲引擎實(shí)現(xiàn)在Android中打開WebView的實(shí)例
這篇文章主要介紹了Unity3D游戲引擎在Android中打開WebView的實(shí)例,需要的朋友可以參考下2014-07-07