最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Retrofit的使用詳解

 更新時間:2018年01月02日 09:09:06   作者:鋸齒流沙  
本文介紹了Android Retrofit的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

關于Retrofit的學習,我算是比較晚的了,而現(xiàn)在Retrofit已經(jīng)是Android非常流行的網(wǎng)絡請求框架了。之前,我沒有學過Retrofit,但最近公司的新項目使用了Retrofit、Rxjava和OkHttp來進行封裝,使用起來非常簡便,增加代碼的美觀程度,也降低了耦合度,這是一個非常棒的框架,特別是這三者一起使用。

簡介

Retrofit是Square公司開發(fā)的一款針對Android網(wǎng)絡請求的框架,現(xiàn)在已經(jīng)更新到2.3版本了。Retrofit的最大特點是使用運行時注解的方式提供功能。

Retrofit的使用

關于Retrofit的使用,其實還是很簡單的,而且邏輯思路也比較清晰,所以開發(fā)者是很容易上手的。

添加依賴

build.gradle文件的dependencies下添加以下依賴:

復制代碼 代碼如下:

compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0'

上面除了添加Retrofit依賴,還添加了gson依賴,來解析請求得到的json數(shù)據(jù)。

定義使用的數(shù)據(jù)集合

class Result <T>{
  var status: Int? = -1//請求結果
  lateinit var message: String;
  var content :T?= null
}

這是返回結果的集合,使用了kotlin來寫

class Content {
  var name: String?= null
  var mobile :String?= null
  var address :String?= null
}

需要的內容集合類

請求

需要一個接口,并且編寫請求的方法

interface HttpService {
  @GET("index.php?m=Api&c=User&a=userInfo")
  fun getUserInfo(): Call<Result<Content>>
}

調用請求

private void request() {
    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("http://one.sinalwj.cn//")
        .addConverterFactory(GsonConverterFactory.create())
        .build();
    HttpService service = retrofit.create(HttpService.class);
    Call<Result<Content>> call = service.getUserInfo();
    call.enqueue(new Callback<Result<Content>>() {
      @Override
      public void onResponse(Call<Result<Content>> call, Response<Result<Content>> response) {
        Log.i("tag", response.body().getContent().getName());
      }
      @Override
      public void onFailure(Call<Result<Content>> call, Throwable t) {
        Log.i("tag", "失敗");
      }
    });

  }

以上就是Retrofit的get請求方式。GET請求需要在請求方法之前添加一個GET注解來標明這是一個GET請求,同樣,如果是POST請求需要一個POST注解。

@POST

POST請求,需要添加一個@POST的注解,并且需要還需要使用@FormUrlEncoded 注解來表明,這是一個表單,使用@Field注解,傳入表單需要的參數(shù)。

@FormUrlEncoded //表單
  @POST("index.php?m=Api&c=User&a=userInfo")
  fun getUserInfo(
      @Field("user_id") user_id: String //參數(shù)
  ): Observable<BaseResult<User>> //返回數(shù)據(jù)類型

@Body

@Body注解是針對POST的請求方式,如傳輸數(shù)據(jù)JSON格式

class Content {
  var name: String?= null
  lateinit var sn:SN

  class SN{
    var out :String ?= null
    var errNo :Int ?= -1
  }
}

@GET("ajax.php")
fun getInfo(@Body content: Content): Call<Result<Content>>

@Path

使用@Path可以動態(tài)的配置URL地址。

@GET("{path/}{index.php?m=Api&c=User&a=userInfo")
fun getUserInfo(@Path("path")path: String): Call<Result<Content>>

@Query

@Query即動態(tài)指定查詢條件

@GET("ajax.php")
fun getInfo(@Query("id")id: String): Call<Result<Content>>

@Query是查詢單一的條件,但是如果是多個條件的話,就不適用了,那么就需要用到@QueryMap注解。@QueryMap就是動態(tài)指定查詢條件組。

文件上傳

使用@Part注解來表示單個文件上傳,而@PartMap注解跟單文件上傳是類似的,是不過是使用了Map集合來封裝了上傳的文件,即多文件上傳。

除了以上的注解,還有@Header,即表示加入消息報頭,因為在http請求的時候,為了防止攻擊、過濾不安全的訪問和添加特殊加密的訪問來保證安全,需要在消息報頭中攜帶一些特殊的消息處理,而在Retrofix中使用@Header即可實現(xiàn)添加消息報頭。

從上面的Retrofix實踐和注解的講解中,我們知道使用Retrofix可以很簡單的,而且代碼邏輯比較清晰的做http請求,其提供非常多的注解來給開發(fā)者使用,簡化了代碼。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android編程之截屏實現(xiàn)方法(包括scrollview與listview)

    Android編程之截屏實現(xiàn)方法(包括scrollview與listview)

    這篇文章主要介紹了Android編程之截屏實現(xiàn)方法,包括截取scrollview與listview屏幕的相關技巧,以及截屏圖片的生成與保存技巧,需要的朋友可以參考下
    2015-11-11
  • Android使用CountDownTimer實現(xiàn)倒數(shù)定時器效果

    Android使用CountDownTimer實現(xiàn)倒數(shù)定時器效果

    這篇文章主要介紹了Android使用CountDownTimer實現(xiàn)倒數(shù)定時器效果的資料,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2017-02-02
  • kotlin 注解 @Parcelize 使用示例和步驟詳解

    kotlin 注解 @Parcelize 使用示例和步驟詳解

    Parcelable 接口是 Android 中用于在組件之間傳遞對象的一種方式,在 Kotlin 中,@Parcelize 注解用于簡化實現(xiàn) Android Parcelable 接口的過程,本文給大家分享kotlin 注解 @Parcelize 使用示例,感興趣的朋友一起看看吧
    2024-06-06
  • Kotlin?launch原理全面分析

    Kotlin?launch原理全面分析

    在Android開發(fā)中,launch是我們經(jīng)常用的,今天來看看它是什么原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • Android線程間通信 Handler使用詳解

    Android線程間通信 Handler使用詳解

    這篇文章主要為大家介紹了Android線程間通信Handler使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android 自定義 HorizontalScrollView 打造多圖片OOM 的橫向滑動效果(實例代碼)

    Android 自定義 HorizontalScrollView 打造多圖片OOM 的橫向滑動效果(實例代碼)

    這篇文章主要介紹了Android 自定義 HorizontalScrollView 打造多圖片OOM 的橫向滑動效果(實例代碼),需要的朋友可以參考下
    2017-10-10
  • Android Usb設備的監(jiān)聽(Dev)外設端口的判定以及耳機的插拔

    Android Usb設備的監(jiān)聽(Dev)外設端口的判定以及耳機的插拔

    今天小編就為大家分享一篇關于Android Usb設備的監(jiān)聽(Dev)外設端口的判定以及耳機的插拔,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Android游戲源碼分享之2048

    Android游戲源碼分享之2048

    本文主要是給大家分享了安卓版的游戲2048的源碼,以及制作思路,是篇非常不錯的文章,有需要的朋友可以參考下
    2014-10-10
  • 深入解析Android App開發(fā)中Context的用法

    深入解析Android App開發(fā)中Context的用法

    這篇文章主要介紹了深入解析Android App開發(fā)中Context的用法,包括Context的創(chuàng)建場景和Context對資源的訪問等內容,需要的朋友可以參考下
    2016-02-02
  • Android自定義View仿支付寶輸入六位密碼功能

    Android自定義View仿支付寶輸入六位密碼功能

    跟選擇銀行卡界面類似,也是用一個PopupWindow,不過輸入密碼界面是一個自定義view,當輸入六位密碼完成后用回調在Activity中獲取到輸入的密碼并以Toast顯示密碼。這篇文章主要介紹了Android自定義View仿支付寶輸入六位密碼功能的相關資料,需要的朋友可以參考下
    2016-10-10

最新評論

黄龙县| 安阳市| 阿鲁科尔沁旗| 涿州市| 鄂伦春自治旗| 太原市| 平利县| 东乡| 会理县| 大方县| 株洲县| 安达市| 清水县| 商水县| 疏附县| 桦甸市| 渑池县| 毕节市| 东方市| 辛集市| 奉化市| 汨罗市| 德阳市| 延边| 大荔县| 阳高县| 东台市| 赣榆县| 登封市| 崇阳县| 蓬安县| 灵川县| 黄梅县| 黔江区| 抚松县| 包头市| 油尖旺区| 山东| 青河县| 平江县| 于田县|