Android Retrofit2使用

Android Retrofit2是什么典予?

Android Retrofit2是一個(gè)安全的為Android和Java開發(fā)的Http訪問(wèn)框架窍奋,它是對(duì)OkHttp的進(jìn)一步封裝,它對(duì)應(yīng)的的git地址和官網(wǎng)如下:

Android Retrofit2能解決什么問(wèn)題碱蒙?

  • 不需要自己封裝具體的Http請(qǐng)求挪凑,線程切換以及數(shù)據(jù)轉(zhuǎn)換等等
  • 接口統(tǒng)一配置定義孕索,且通過(guò)注解的方式設(shè)置參數(shù),代碼清晰躏碳,便于維護(hù)管理
  • 可以與RxJava很輕松的關(guān)聯(lián)使用
  • 通過(guò)添加各種轉(zhuǎn)換類搞旭,能講response直接轉(zhuǎn)換為需要的對(duì)象

Android Retrofit2具體該怎么使用?

一菇绵、導(dǎo)入依賴包

  • IDE和構(gòu)建工具:androidstudio Gradle
  • retrofit2版本號(hào):2.3.0

找到gradle配置文件build.gradle(Module:app),注意是app的配置文件肄渗,然后在dependencies添加如下配置,然后如下圖所示點(diǎn)擊sync咬最,重新下載并導(dǎo)入依賴的retrofit2包恳啥,需要導(dǎo)入3個(gè)包,下面兩個(gè)需要用來(lái)將Response數(shù)據(jù)進(jìn)行Gson轉(zhuǎn)換或者String轉(zhuǎn)化丹诀。

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'//ConverterFactory的Gson依賴包
compile 'com.squareup.retrofit2:converter-scalars:2.3.0'//ConverterFactory的String依賴包

二钝的、在manifest文件中申明網(wǎng)絡(luò)訪問(wèn)權(quán)限

<uses-permission android:name="android.permission.INTERNET"/>

三、創(chuàng)建Po對(duì)象

這邊我使用網(wǎng)上找的百度天氣的一個(gè)API接口:http://api.map.baidu.com/telematics/v3/weather?location=廣州&output=JSON&ak=FK9mkfdQsloEngodbFl4FeY3

此接口的返回值如下

{"status":201,"message":"APP被用戶自己禁用铆遭,請(qǐng)?jiān)诳刂婆_(tái)解禁"}

所以我這邊先定義了一個(gè)PO對(duì)象POWeather來(lái)封裝這個(gè)Response消息硝桩。

public class POWeather {
    private String status;
    private String message;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

四毛萌、定義API的interface接口

這個(gè)接口的這個(gè)部分telematics/v3/weather?location=廣州&output=JSON&ak=FK9mkfdQsloEngodbFl4FeY3掂恕,通過(guò)創(chuàng)建如下的interface的getWeather表示

public interface ApiService {

    @GET("/telematics/v3/weather")
    Call<POWeather> getWeather (@Query("location") String location, @Query("output") String ouput, @Query("ak") String ak);

五生棍、創(chuàng)建Retrofit實(shí)例

我們創(chuàng)建一個(gè)Retrofit實(shí)例蝶桶,來(lái)準(zhǔn)備調(diào)用API毕贼,其中baseUrl是這個(gè)接口的Root地址齐媒,addConverterFactory用來(lái)增加返回值轉(zhuǎn)化為Gson對(duì)象栋猖,addConverterFactory用來(lái)增加返回值轉(zhuǎn)化為String對(duì)象叨咖。

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://api.map.baidu.com/")
            //增加返回值為Gson的支持(以實(shí)體類返回)
            .addConverterFactory(ScalarsConverterFactory.create())
            //增加返回值為Gson的支持(以實(shí)體類返回)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

ApiService service = retrofit.create(ApiService.class);

六害碾、調(diào)用API接口

通過(guò)如下代碼開始訪問(wèn)此API接口矢劲,訪問(wèn)成功通過(guò)Log輸出到控制臺(tái)

Call<POWeather> weather = service.getWeather("廣州","JSON","FK9mkfdQsloEngodbFl4FeY3");

weather.enqueue(new Callback<POWeather>() {
    @Override
    public void onResponse(Call<POWeather> call, Response<POWeather> response) {
        Log.e("test",response.body().getMessage());
    }

    @Override
    public void onFailure(Call<POWeather> call, Throwable t) {

    }

});

輸出消息成功如下:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市慌随,隨后出現(xiàn)的幾起案子芬沉,更是在濱河造成了極大的恐慌,老刑警劉巖阁猜,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丸逸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剃袍,警方通過(guò)查閱死者的電腦和手機(jī)黄刚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)民效,“玉大人憔维,你說(shuō)我怎么就攤上這事侍芝。” “怎么了埋同?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵州叠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我凶赁,道長(zhǎng)咧栗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任虱肄,我火速辦了婚禮致板,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咏窿。我一直安慰自己斟或,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布集嵌。 她就那樣靜靜地躺著萝挤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪根欧。 梳的紋絲不亂的頭發(fā)上怜珍,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音凤粗,去河邊找鬼酥泛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嫌拣,可吹牛的內(nèi)容都是我干的柔袁。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼异逐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捶索!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起应役,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤情组,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后箩祥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肆氓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年袍祖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谢揪。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蕉陋,死狀恐怖捐凭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凳鬓,我是刑警寧澤茁肠,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站缩举,受9級(jí)特大地震影響垦梆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仅孩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一托猩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辽慕,春花似錦京腥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至船侧,卻和暖如春因悲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勺爱。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工晃琳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琐鲁。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓卫旱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親围段。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顾翼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,870評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,412評(píng)論 2 45
  • 周一 休息 周二 肩 周三 腿 周四 胸 周五 休息 周六 背 周日 腹+手臂
    shane911閱讀 79評(píng)論 0 0
  • Crash日志 如果傳入的CGPoint的值是NaN, 就可能觸發(fā)這個(gè)Crash: 通過(guò)上述代碼奈泪,模擬該crash...
    心有思閱讀 1,019評(píng)論 0 1
  • 名人分享體會(huì)心得适贸,制作網(wǎng)上內(nèi)部刊物,文藝匯演涝桅,演講比賽拜姿,征文比賽,有獎(jiǎng)知識(shí)問(wèn)答冯遂,微視頻大賽蕊肥,制作表情包,微博話題置...
    來(lái)自申論55的覺悟閱讀 538評(píng)論 0 0