Android Retrofit的簡(jiǎn)單介紹和使用
Retrofit與okhttp共同出自于Square公司,retrofit就是對(duì)okhttp做了一層封裝。把網(wǎng)絡(luò)請(qǐng)求都交給給了Okhttp,我們只需要通過(guò)簡(jiǎn)單的配置就能使用retrofit來(lái)進(jìn)行網(wǎng)絡(luò)請(qǐng)求了,其主要作者是Android大神JakeWharton。
導(dǎo)包:
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依賴包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依賴包
*這里需要值得注意的是導(dǎo)入的retrofit2包的版本必須要一致,否則就會(huì)報(bào)錯(cuò)。
首先定義我們請(qǐng)求的Api,我們假設(shè)是這樣的
http://106.3.227.33/pulamsi/mobileLogin/submit.html
與Okhttp不同的是,Retrofit需要定義一個(gè)接口,用來(lái)返回我們的Call對(duì)象,這里示范的是Post請(qǐng)求:
public interface RequestServes {
@POST("mobileLogin/submit.html")
Call<String> getString(@Query("loginname") String loginname,
@Query("nloginpwd") String nloginpwd);
}
Retrofit提供的請(qǐng)求方式注解有@GET和@POST,參數(shù)注解有@PATH和@Query等,我們只介紹常用的;前兩個(gè)顧名思義就是定義你的請(qǐng)求方式Get or Post,后面的@PATH指的是通過(guò)參數(shù)填充完整的路徑,一般用法:
@GET("{name}")
Call<User>
getUser(@Path("name") String name);
這里的參數(shù)username會(huì)被填充至{name}中,形成完整的Url請(qǐng)求地址,{name}相當(dāng)于一個(gè)占位符;
@Query就是我們的請(qǐng)求的鍵值對(duì)的設(shè)置,我們構(gòu)建Call對(duì)象的時(shí)候會(huì)傳入此參數(shù),
@POST("mobileLogin/submit.html")
Call<String> getString(@Query("loginname") String loginname,
@Query("nloginpwd") String nloginpwd);
這里@Query("loginname")就是鍵,后面的loginname就是具體的值了,值得注意的是Get和Post請(qǐng)求,都是這樣填充參數(shù)的;
接口寫(xiě)完了之后我們需要來(lái)定義Retrofit對(duì)象來(lái)進(jìn)行請(qǐng)求了;
創(chuàng)建一個(gè)Retrofit 對(duì)象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://106.3.227.33/pulamsi/")
//增加返回值為String的支持
.addConverterFactory(ScalarsConverterFactory.create())
//增加返回值為Gson的支持(以實(shí)體類返回)
.addConverterFactory(GsonConverterFactory.create())
//增加返回值為Oservable<T>的支持
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
這里的baseUrl加上之前@POST("mobileLogin/submit.html")定義的參數(shù)形成完整的請(qǐng)求地址;
addConverterFactory(ScalarsConverterFactory.create())的意思是構(gòu)建了一個(gè)返回支持,如果你的Call對(duì)象的泛型接收另外的格式需要添加另外的支持,上述代碼已經(jīng)列出;
接下來(lái)我們用這個(gè)Retrofit對(duì)象創(chuàng)建一個(gè)RequestSerives接口對(duì)象,也就是我們之前定義的那個(gè)接口,并且得到我們的Call對(duì)象;
RequestSerives requestSerives = retrofit.create(RequestSerives.class);//這里采用的是Java的動(dòng)態(tài)代理模式
Call<String> call = requestSerives.getString("userName", "1234");//傳入我們請(qǐng)求的鍵值對(duì)的值
利用得到的Call對(duì)象,然后我們就發(fā)出網(wǎng)絡(luò)請(qǐng)求了:
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Log.e("===","return:"response.body().toString());
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("===","失敗");
}
});
以上所述是小編給大家介紹的Android Retrofit的簡(jiǎn)單介紹和使用,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android編程使用pull方式解析xml格式文件的方法詳解
這篇文章主要介紹了Android編程使用pull方式解析xml格式文件的方法,結(jié)合實(shí)例形式分析了Android調(diào)用pull解析器操作xml格式文件的步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
android與asp.net服務(wù)端共享session的方法詳解
這篇文章主要給大家介紹了關(guān)于android與asp.net服務(wù)端如何共享session的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09
Android 中IntentFilter的匹配規(guī)則實(shí)例詳解
這篇文章主要介紹了Android 中IntentFilter的匹配規(guī)則實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能了解掌握IntentFilter的匹配規(guī)則問(wèn)題,需要的朋友可以參考下2017-09-09
Android實(shí)現(xiàn)微信右側(cè)頂部下拉對(duì)話框
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)微信右側(cè)頂部下拉對(duì)話框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Android使用文件進(jìn)行數(shù)據(jù)存儲(chǔ)的方法
這篇文章主要介紹了Android使用文件進(jìn)行數(shù)據(jù)存儲(chǔ)的方法,較為詳細(xì)的分析了Android基于文件實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)所涉及的相關(guān)概念與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
Android ViewPager實(shí)現(xiàn)圖片輪播效果
這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)圖片輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android基于Glide v4.x的圖片加載進(jìn)度監(jiān)聽(tīng)
本篇文章主要介紹了基于Glide v4.x的圖片加載進(jìn)度監(jiān)聽(tīng)的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08

