Android Retrofit的簡單介紹和使用
Retrofit與okhttp共同出自于Square公司,retrofit就是對(duì)okhttp做了一層封裝。把網(wǎng)絡(luò)請求都交給給了Okhttp,我們只需要通過簡單的配置就能使用retrofit來進(jìn)行網(wǎng)絡(luò)請求了,其主要作者是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ò)。
首先定義我們請求的Api,我們假設(shè)是這樣的
http://106.3.227.33/pulamsi/mobileLogin/submit.html
與Okhttp不同的是,Retrofit需要定義一個(gè)接口,用來返回我們的Call對(duì)象,這里示范的是Post請求:
public interface RequestServes {
@POST("mobileLogin/submit.html")
Call<String> getString(@Query("loginname") String loginname,
@Query("nloginpwd") String nloginpwd);
}
Retrofit提供的請求方式注解有@GET和@POST,參數(shù)注解有@PATH和@Query等,我們只介紹常用的;前兩個(gè)顧名思義就是定義你的請求方式Get or Post,后面的@PATH指的是通過參數(shù)填充完整的路徑,一般用法:
@GET("{name}")
Call<User>
getUser(@Path("name") String name);
這里的參數(shù)username會(huì)被填充至{name}中,形成完整的Url請求地址,{name}相當(dāng)于一個(gè)占位符;
@Query就是我們的請求的鍵值對(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請求,都是這樣填充參數(shù)的;
接口寫完了之后我們需要來定義Retrofit對(duì)象來進(jìn)行請求了;
創(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ù)形成完整的請求地址;
addConverterFactory(ScalarsConverterFactory.create())的意思是構(gòu)建了一個(gè)返回支持,如果你的Call對(duì)象的泛型接收另外的格式需要添加另外的支持,上述代碼已經(jīng)列出;
接下來我們用這個(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");//傳入我們請求的鍵值對(duì)的值
利用得到的Call對(duì)象,然后我們就發(fā)出網(wǎng)絡(luò)請求了:
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的簡單介紹和使用,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
圖文講解Android的ImageView類中的ScaleType屬性設(shè)置
這篇文章主要介紹了Android的ImageView類中的ScaleType屬性設(shè)置,同時(shí)文中還講了實(shí)現(xiàn)圖片寬度100%ImageView寬度且高度按比例自動(dòng)伸縮的方法,需要的朋友可以參考下2016-03-03
在android開發(fā)中盡量不要使用中文路徑的問題詳解
本篇文章對(duì)在android開發(fā)中盡量不要使用中文路徑的問題進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05
Android Root設(shè)備中的su權(quán)限獲取和使用詳解
本篇文章主要介紹了Android Root設(shè)備中的su權(quán)限獲取和使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01
Android實(shí)現(xiàn)在屏幕上移動(dòng)圖片的方法
這篇文章主要介紹了Android實(shí)現(xiàn)在屏幕上移動(dòng)圖片的方法,實(shí)例分析了Android操作圖片的相關(guān)技巧,需要的朋友可以參考下2015-06-06
Android開發(fā)實(shí)現(xiàn)ImageView加載攝像頭拍攝的大圖功能
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)ImageView加載攝像頭拍攝的大圖功能,涉及Android基于ImageView的攝像頭拍攝圖片加載、保存及權(quán)限控制等相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
PopupWindow?RecyclerView實(shí)現(xiàn)下拉選擇Spinner示例解析
這篇文章主要介紹了PopupWindow?RecyclerView實(shí)現(xiàn)下拉選擇Spinner示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法
這篇文章主要介紹了Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法,用idegen來生成針對(duì)AndroidStudio或IntelliJ?IDEA的Android系統(tǒng)源代碼工程配置文件,需要的朋友可以參考下2022-08-08
Android SwipereFreshLayout下拉刷新
這篇文章主要介紹了Android SwipereFreshLayout下拉刷新的相關(guān)資料,需要的朋友可以參考下2017-06-06

