retrofit 網絡請求的service

  • @Path:所有在網址中的參數(URL的問號前面)請求的相對地址
    請求的相對地址也是需要調用方傳遞,通過Path注解可以在具體的
    調用場景中動態(tài)傳遞
  • @Query:URL問號后面的參數
  • @QueryMap: 相當于多個@Query
  • @Field:Post請求需要把請求參數放置在請求體中赂鲤,而非拼接在url
    后面 (使用@Field時記得添加@FormUrlEncoded)
  • @Body:相當于多個@Field,以對象的形式提交

兩種requestBody泉褐,一個是FormBody,一個是MultipartBody鸟蜡,前者以表單的方式傳遞簡單的鍵值對膜赃,后者以POST表單的方式上傳文件可以攜帶參數。

  • @FormUrlEncoded:表單的方式傳遞鍵值對
    public interface IUserBiz
    {
    @POST("login")
    @FormUrlEncoded
    Call<User> login(@Field("username") String username, @Field("password") String password);
    }

    /省略retrofit的構建代碼
    Call<User> call = userBiz.login("zhy", "123");
    //省略call執(zhí)行相關代碼
    
  • @MultipartBody:單文件上傳
    public interface IUserBiz
    {
    @Multipart
    @POST("register")
    Call<User> registerUser(@Part MultipartBody.Part photo, @Part("username") RequestBody username, @Part("password") RequestBody password);
    }

    File file = new File(Environment.getExternalStorageDirectory(), "icon.png");
    RequestBody photoRequestBody =RequestBody.create(MediaType.parse("image/png"), file);
    MultipartBody.Part photo =  MultipartBody.Part.createFormData("photos", "icon.png", photoRequestBody);
    Call<User> call = userBiz.registerUser(photo, RequestBody.create(null, "abc"), RequestBody.create(null, "123"));
    

這里@MultiPart的意思就是允許多個@Part了揉忘,我們這里使用了3個@Part跳座,第一個我們準備上傳個文件,使用了MultipartBody.Part類型泣矛,其余兩個均為簡單的鍵值對疲眷。

  • PartMap 多文件上傳
    public interface IUserBiz
    {
    @Multipart
    @POST("register")
    Call<User> registerUser(@PartMap Map<String, RequestBody> params, @Part("password") RequestBody password);
    }

    File file = new File(Environment.getExternalStorageDirectory(), "messenger_01.png");
    RequestBody photo = RequestBody.create(MediaType.parse("image/png", file);
    Map<String,RequestBody> photos = new HashMap<>();
    photos.put("photos\"; filename=\"icon.png", photo);
    photos.put("username",  RequestBody.create(null, "abc"));
    
    Call<User> call = userBiz.registerUser(photos, RequestBody.create(null, "123"));
    

GET請求

-樣式4几颜、多個參數在URL問號之后,且個數不確定
http://102.10.10.132/api/News?newsId={資訊id}&type={類型}...

    @GET("News")
    Call<NewsBean> getItem(@QueryMap Map<String, String> map);

也可以:

  @GET("News")
  Call<NewsBean> getItem(
          @Query("newsId") String newsId讯屈,
          @QueryMap Map<String, String> map);

POST請求

  • 樣式1蛋哭、需要補全URL,post的數據只有一條reason
    http://102.10.10.132/api/Comments/{newsId}
    @FormUrlEncoded
    @POST("Comments/{newsId}")
    Call<Comment> reportComment(
    @Path("newsId") String commentId,
    @Field("reason") String reason);

  • 樣式2涮母、需要補全URL谆趾,問號后加入access_token,post的數據只有一條reason
    http://102.10.10.132/api/Comments/{newsId}?access_token={access_token}
    @FormUrlEncoded
    @POST("Comments/{newsId}")
    Call<Comment> reportComment(
    @Path("newsId") String commentId,
    @Query("access_token") String access_token,
    @Field("reason") String reason);

  • 樣式3叛本、需要補全URL沪蓬,問號后加入access_token,post一個body(對象)
    @POST("Comments/{newsId}")
    Call<Comment> reportComment(
    @Path("newsId") String commentId,
    @Query("access_token") String access_token,
    @Body CommentBean bean);

參考:http://www.reibang.com/p/7687365aa946

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末来候,一起剝皮案震驚了整個濱河市跷叉,隨后出現的幾起案子,更是在濱河造成了極大的恐慌吠勘,老刑警劉巖性芬,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異剧防,居然都是意外死亡植锉,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門峭拘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俊庇,“玉大人狮暑,你說我怎么就攤上這事』员ィ” “怎么了搬男?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長彭沼。 經常有香客問我缔逛,道長,這世上最難降的妖魔是什么姓惑? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任褐奴,我火速辦了婚禮,結果婚禮上于毙,老公的妹妹穿的比我還像新娘敦冬。我一直安慰自己,他們只是感情好唯沮,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布脖旱。 她就那樣靜靜地躺著,像睡著了一般介蛉。 火紅的嫁衣襯著肌膚如雪萌庆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天甘耿,我揣著相機與錄音踊兜,去河邊找鬼。 笑死佳恬,一個胖子當著我的面吹牛,可吹牛的內容都是我干的于游。 我是一名探鬼主播毁葱,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼贰剥!你這毒婦竟也來了倾剿?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤蚌成,失蹤者是張志新(化名)和其女友劉穎前痘,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體担忧,經...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡芹缔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了瓶盛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最欠。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡示罗,死狀恐怖,靈堂內的尸體忽然破棺而出芝硬,到底是詐尸還是另有隱情蚜点,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布拌阴,位于F島的核電站绍绘,受9級特大地震影響,放射性物質發(fā)生泄漏迟赃。R本人自食惡果不足惜陪拘,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捺氢。 院中可真熱鬧藻丢,春花似錦、人聲如沸摄乒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽馍佑。三九已至斋否,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拭荤,已是汗流浹背茵臭。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舅世,地道東北人旦委。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像雏亚,于是被迫代替她去往敵國和親缨硝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容