Retrofit基本使用

Retrofit是由著名的 Square 公司開源的一個基于OkHttp實現(xiàn)網(wǎng)絡請求的框架鳖悠,以其簡易的接口配置宵统、強大的擴展支持蜒犯、優(yōu)雅的代碼結構受到大家的追捧絮供。

與OkHttp的關系

Retrofit2.0中網(wǎng)絡請求部分有OkHttp實現(xiàn),其框架層主要實現(xiàn)了接口層的封裝帆赢,對RESTful風格擁有完美的支持小压。


架構圖.png

其中Retrofit層實現(xiàn)RESTful接口的封裝,OkHttp全權負責與服務器的交互椰于。Retrofit與OkHttp完全耦合怠益。

使用

首先引入Retrofit包和OkHttp包

implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.okhttp3:okhttp:3.8.0'

按照Retrofit官網(wǎng)的例子,定義訪問Github的接口

public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

Retrofit對域名及參數(shù)進行了封裝瘾婿,相當于訪問

https://api.github.com/users/{user}/repos

listRepos方法中可以傳入相應的用戶名
接下來溉痢,構造 Retrofit

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();

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

調用listRepos方法

Call<List<Repo>> repos = service.listRepos("octocat");

執(zhí)行網(wǎng)絡請求

// 同步調用
List<Repo> data = repos.execute(); 

// 異步調用
repos.enqueue(new Callback<List<Repo>>() {
    @Override
    public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
      List<Repo> data = response.body();
    }

    @Override
    public void onFailure(Call<List<Repo>> call, Throwable t) {
      t.printStackTrace();
    }
});

RESTful接口封裝

Retrofit對RESTful風格接口具有完美的封裝,在Retrofit中憋他,各種網(wǎng)絡請求方式及參數(shù)都使用了注解孩饼,大大簡化的調用難度。
網(wǎng)絡請求方式主要有以下幾種:

  • @GET
  • @POST
  • @PUT
  • @DELETE
  • @PATCH
  • @HEAD

GET請求

@GET("users/{user}/repos")
Call<List<Repo>> listRepos(
    @Path("user") String user
    @Query("password") String password
);

其中@Path可以靈活傳入path路徑參數(shù)竹挡,@Query傳入需要傳入的請求參數(shù)值镀娶,當請求參數(shù)較多或有些參數(shù)不用傳時,可以使用@QueryMap靈活實現(xiàn)揪罕。

POST請求

@FormUrlEncoded
@POST("/")
Call<ResponseBody> example(
   @Field("name") String name,
   @Field("occupation") String occupation
);

POST請求中當需要使用表單形式傳參時梯码,可使用@FormUrlEncoded進行標記。傳入的參數(shù)使用@Field進行標記好啰,當傳入?yún)?shù)較多或有些參數(shù)不用傳時轩娶,可以使用@FieldMap靈活實現(xiàn)。

PUT請求

@FormUrlEncoded
@PUT("sys/user/resetPassword")
Call<ResponseBody> resetPassword(
    @Field("telephone") String telephone,
    @Field("password") String pwd
);

當需要修改服務器上的某些信息時框往,我們可以使用PUT請求鳄抒,其使用方式類似于POST請求。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末椰弊,一起剝皮案震驚了整個濱河市许溅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秉版,老刑警劉巖贤重,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異清焕,居然都是意外死亡并蝗,警方通過查閱死者的電腦和手機祭犯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滚停,“玉大人盹憎,你說我怎么就攤上這事☆砹酰” “怎么了侨嘀?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵九榔,是天一觀的道長。 經(jīng)常有香客問我旺入,道長挂签,這世上最難降的妖魔是什么疤祭? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮饵婆,結果婚禮上勺馆,老公的妹妹穿的比我還像新娘。我一直安慰自己侨核,他們只是感情好草穆,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搓译,像睡著了一般悲柱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上些己,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天豌鸡,我揣著相機與錄音,去河邊找鬼段标。 笑死涯冠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的逼庞。 我是一名探鬼主播蛇更,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赛糟!你這毒婦竟也來了械荷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤虑灰,失蹤者是張志新(化名)和其女友劉穎吨瞎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穆咐,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡颤诀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年字旭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崖叫。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡遗淳,死狀恐怖,靈堂內的尸體忽然破棺而出心傀,到底是詐尸還是另有隱情屈暗,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布脂男,位于F島的核電站养叛,受9級特大地震影響,放射性物質發(fā)生泄漏宰翅。R本人自食惡果不足惜弃甥,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汁讼。 院中可真熱鬧淆攻,春花似錦、人聲如沸嘿架。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耸彪。三九已至艰毒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搜囱,已是汗流浹背丑瞧。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜀肘,地道東北人绊汹。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像扮宠,于是被迫代替她去往敵國和親西乖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容

  • **版權聲明:本文為小斑馬偉原創(chuàng)文章坛增,轉載請注明出處! 一获雕、 RESTful REST:是 “REpresenta...
    ZebraWei閱讀 1,206評論 0 3
  • 1 前言 ??每次使用 Retrofit 做網(wǎng)絡請求都要到網(wǎng)上去搜索代碼,然后復制收捣、粘貼届案;有時候某個注解的使用方式...
    iSuperRed閱讀 2,315評論 1 4
  • Retrofit 作為Android和Java類型安全的HTTP客戶端,記得剛畢業(yè)那會面試罢艾,面試官問我用過Retr...
    有沒有口罩給我一個閱讀 32,315評論 0 20
  • Retrofit基本使用 內容 基礎 接口配置 發(fā)送請求異步請求 && 示例一Convert && 示例二RxJa...
    四次元君閱讀 553評論 0 0
  • 一楣颠、學習與實踐 1.付出不亞于任何人的努力 2.要謙虛尽纽,不要驕傲 3.要每天反省 4.活著,就要感謝 5.積善行童漩,...
    藍曉霽閱讀 64評論 0 0