亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android Retrofit的使用詳解

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

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

簡(jiǎn)介

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

Retrofit的使用

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

添加依賴

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

復(fù)制代碼 代碼如下:

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

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

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

class Result <T>{
  var status: Int? = -1//請(qǐng)求結(jié)果
  lateinit var message: String;
  var content :T?= null
}

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

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

需要的內(nèi)容集合類

請(qǐng)求

需要一個(gè)接口,并且編寫請(qǐng)求的方法

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

調(diào)用請(qǐng)求

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請(qǐng)求方式。GET請(qǐng)求需要在請(qǐng)求方法之前添加一個(gè)GET注解來標(biāo)明這是一個(gè)GET請(qǐng)求,同樣,如果是POST請(qǐng)求需要一個(gè)POST注解。

@POST

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

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

@Body

@Body注解是針對(duì)POST的請(qǐng)求方式,如傳輸數(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可以動(dòng)態(tài)的配置URL地址。

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

@Query

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

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

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

文件上傳

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android編寫簡(jiǎn)單的聊天室應(yīng)用

    Android編寫簡(jiǎn)單的聊天室應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單聊天室的相關(guān)資料,具有發(fā)送表情,更改頭像等功能
    2016-06-06
  • Android 中IntentFilter的匹配規(guī)則實(shí)例詳解

    Android 中IntentFilter的匹配規(guī)則實(shí)例詳解

    這篇文章主要介紹了Android 中IntentFilter的匹配規(guī)則實(shí)例詳解的相關(guān)資料,希望通過本文大家能了解掌握IntentFilter的匹配規(guī)則問題,需要的朋友可以參考下
    2017-09-09
  • Flutter實(shí)現(xiàn)自定義搜索框AppBar的示例代碼

    Flutter實(shí)現(xiàn)自定義搜索框AppBar的示例代碼

    開發(fā)中,頁面頭部為搜索樣式的設(shè)計(jì)非常常見,為了可以像系統(tǒng)AppBar那樣使用,本文將利用Flutter自定義一個(gè)搜索框,感興趣的可以了解一下
    2022-04-04
  • Android DataBinding的官方雙向綁定示例

    Android DataBinding的官方雙向綁定示例

    本篇文章主要介紹了Android DataBinding的官方雙向綁定示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Android入門之ScrollView的使用教程

    Android入門之ScrollView的使用教程

    我們經(jīng)??梢钥吹皆谑謾C(jī)里正在垂直加載一堆的數(shù)據(jù),然后過一會(huì)加載得內(nèi)容過多,到了手機(jī)的底部了,垂直方向就會(huì)出現(xiàn)一個(gè)“滾動(dòng)條”。本文就來通過一些示例和大家介紹下ScrollView(滾動(dòng)條)的使用,感興趣的可以了解一下
    2022-11-11
  • Android中Activity啟動(dòng)默認(rèn)不顯示輸入法解決方法

    Android中Activity啟動(dòng)默認(rèn)不顯示輸入法解決方法

    這篇文章主要介紹了Android中Activity啟動(dòng)默認(rèn)不顯示輸入法解決方法,一般是因?yàn)榘琧heckbox控件導(dǎo)致Activity啟動(dòng)默認(rèn)不顯示輸入法,本文給出了正確解決方法,需要的朋友可以參考下
    2015-06-06
  • Android倒計(jì)時(shí)的開始與停止 剩余時(shí)分秒的展示

    Android倒計(jì)時(shí)的開始與停止 剩余時(shí)分秒的展示

    這篇文章主要為大家詳細(xì)介紹了Android倒計(jì)時(shí)的開始與停止,剩余時(shí)分秒的展示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • android開發(fā)之關(guān)閉所有的activity的方法

    android開發(fā)之關(guān)閉所有的activity的方法

    本篇文章主要介紹了android開發(fā)之關(guān)閉所有的activity的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • c++ mk文件出錯(cuò)Jni調(diào)用產(chǎn)生java.lang.UnsatisfiedLinkError錯(cuò)誤解決方法

    c++ mk文件出錯(cuò)Jni調(diào)用產(chǎn)生java.lang.UnsatisfiedLinkError錯(cuò)誤解決方法

    錯(cuò)誤產(chǎn)生在我把方法從c語言轉(zhuǎn)為c++語言后產(chǎn)生的,后來檢查到這種錯(cuò)誤是因?yàn)閙k文件出錯(cuò),加載c文件和加載c++的文件所用的代碼不一樣,下面請(qǐng)看
    2013-11-11
  • Android積分簽到上移消失動(dòng)畫效果

    Android積分簽到上移消失動(dòng)畫效果

    這篇文章主要介紹了Android積分簽到上移消失動(dòng)畫效果大致思路:動(dòng)畫部分,由一個(gè)垂直的平移和一個(gè)透明度變化的兩個(gè)動(dòng)畫組成。然后通過AnimationSet將兩個(gè)動(dòng)畫添加到集合,然后開始播放動(dòng)畫。
    2018-05-05

最新評(píng)論