国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Retrofit的簡單介紹和使用

2019-10-23 18:34:25
字體:
來源:轉載
供稿:網友

Retrofit與okhttp共同出自于Square公司,retrofit就是對okhttp做了一層封裝。把網絡請求都交給給了Okhttp,我們只需要通過簡單的配置就能使用retrofit來進行網絡請求了,其主要作者是Android大神JakeWharton

導包:

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依賴包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依賴包

*這里需要值得注意的是導入的retrofit2包的版本必須要一致,否則就會報錯。

首先定義我們請求的Api,我們假設是這樣的

http://106.3.227.33/pulamsi/mobileLogin/submit.html

與Okhttp不同的是,Retrofit需要定義一個接口,用來返回我們的Call對象,這里示范的是Post請求:

public interface RequestServes {  @POST("mobileLogin/submit.html")  Call<String> getString(@Query("loginname") String loginname,              @Query("nloginpwd") String nloginpwd);}

Retrofit提供的請求方式注解有@GET和@POST,參數注解有@PATH和@Query等,我們只介紹常用的;前兩個顧名思義就是定義你的請求方式Get or Post,后面的@PATH指的是通過參數填充完整的路徑,一般用法:

@GET("{name}")Call<User>getUser(@Path("name") String name);

這里的參數username會被填充至{name}中,形成完整的Url請求地址,{name}相當于一個占位符;

@Query就是我們的請求的鍵值對的設置,我們構建Call對象的時候會傳入此參數,

@POST("mobileLogin/submit.html")  Call<String> getString(@Query("loginname") String loginname,             @Query("nloginpwd") String nloginpwd);

這里@Query("loginname")就是鍵,后面的loginname就是具體的值了,值得注意的是Get和Post請求,都是這樣填充參數的;

接口寫完了之后我們需要來定義Retrofit對象來進行請求了;

創建一個Retrofit 對象

Retrofit retrofit = new Retrofit.Builder()        .baseUrl("http://106.3.227.33/pulamsi/")        //增加返回值為String的支持        .addConverterFactory(ScalarsConverterFactory.create())        //增加返回值為Gson的支持(以實體類返回)        .addConverterFactory(GsonConverterFactory.create())        //增加返回值為Oservable<T>的支持        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())        .build();

這里的baseUrl加上之前@POST("mobileLogin/submit.html")定義的參數形成完整的請求地址;

addConverterFactory(ScalarsConverterFactory.create())的意思是構建了一個返回支持,如果你的Call對象的泛型接收另外的格式需要添加另外的支持,上述代碼已經列出;

接下來我們用這個Retrofit對象創建一個RequestSerives接口對象,也就是我們之前定義的那個接口,并且得到我們的Call對象;

RequestSerives requestSerives = retrofit.create(RequestSerives.class);//這里采用的是Java的動態代理模式Call<String> call = requestSerives.getString("userName", "1234");//傳入我們請求的鍵值對的值

利用得到的Call對象,然后我們就發出網絡請求了:

call.enqueue(new Callback<String>() {  @Override  public void onResponse(Call<String> call, Response<String> response) {    Log.e("===","return:"response.body().toString());  }  @Override  public void onFailure(Call<String> call, Throwable t) {    Log.e("===","失敗");  }});

以上所述是小編給大家介紹的Android Retrofit的簡單介紹和使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陇西县| 南召县| 城固县| 根河市| 连城县| 霍邱县| 托克托县| 来宾市| 大方县| 涪陵区| 德庆县| 黔西| 江口县| 兴安盟| 广饶县| 钟山县| 桑植县| 同心县| 大同县| 敖汉旗| 若尔盖县| 嘉义县| 曲松县| 韶关市| 延寿县| 临夏县| 全椒县| 太仆寺旗| 昂仁县| 民乐县| 新乡市| 陵川县| 双辽市| 平原县| 沾化县| 博罗县| 金坛市| 永登县| 扬州市| 咸丰县| 北辰区|