怎么使用AndroidRetrofit-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“怎么使用Android Retrofit”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么使用Android Retrofit”吧!

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比集美網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式集美網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋集美地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

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

簡(jiǎn)介

Retrofit是Square公司開(kāi)發(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)單的,而且邏輯思路也比較清晰,所以開(kāi)發(fā)者是很容易上手的。

添加依賴

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

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


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

上面除了添加Retrofit依賴,還添加了gson依賴,來(lái)解析請(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來(lái)寫(xiě)

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

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

請(qǐng)求

需要一個(gè)接口,并且編寫(xiě)請(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注解來(lái)標(biāo)明這是一個(gè)GET請(qǐng)求,同樣,如果是POST請(qǐng)求需要一個(gè)POST注解。

怎么使用Android Retrofit

@POST

POST請(qǐng)求,需要添加一個(gè)@POST的注解,并且需要還需要使用@FormUrlEncoded 注解來(lái)表明,這是一個(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注解來(lái)表示單個(gè)文件上傳,而@PartMap注解跟單文件上傳是類似的,是不過(guò)是使用了Map集合來(lái)封裝了上傳的文件,即多文件上傳。

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

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

到此,相信大家對(duì)“怎么使用Android Retrofit”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)。

文章標(biāo)題:怎么使用AndroidRetrofit-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://muchs.cn/article28/cosjcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作企業(yè)網(wǎng)站制作、虛擬主機(jī)服務(wù)器托管、定制開(kāi)發(fā)網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)