Retrofit與okhttp共同出自于Square公司,retrofit就是對okhttp做了一層封裝。把網(wǎng)絡(luò)請求都交給給了Okhttp,我們只需要通過簡單的配置就能使用retrofit來進(jìn)行網(wǎng)絡(luò)請求了,其主要作者是Android大神JakeWharton。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供南溪網(wǎng)站建設(shè)、南溪做網(wǎng)站、南溪網(wǎng)站設(shè)計(jì)、南溪網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、南溪企業(yè)網(wǎng)站模板建站服務(wù),10年南溪做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
導(dǎo)包:
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依賴包
*這里需要值得注意的是導(dǎo)入的retrofit2包的版本必須要一致,否則就會報(bào)錯。
首先定義我們請求的Api,我們假設(shè)是這樣的
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,參數(shù)注解有@PATH和@Query等,我們只介紹常用的;前兩個顧名思義就是定義你的請求方式Get or Post,后面的@PATH指的是通過參數(shù)填充完整的路徑,一般用法:
@GET("{name}") Call<User> getUser(@Path("name") String name);
這里的參數(shù)username會被填充至{name}中,形成完整的Url請求地址,{name}相當(dāng)于一個占位符;
@Query就是我們的請求的鍵值對的設(shè)置,我們構(gòu)建Call對象的時候會傳入此參數(shù),
@POST("mobileLogin/submit.html") Call<String> getString(@Query("loginname") String loginname, @Query("nloginpwd") String nloginpwd);
這里@Query("loginname")
就是鍵,后面的loginname就是具體的值了,值得注意的是Get和Post請求,都是這樣填充參數(shù)的;
接口寫完了之后我們需要來定義Retrofit對象來進(jìn)行請求了;
創(chuàng)建一個Retrofit 對象
Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://106.3.227.33/pulamsi/") //增加返回值為String的支持 .addConverterFactory(ScalarsConverterFactory.create()) //增加返回值為Gson的支持(以實(shí)體類返回) .addConverterFactory(GsonConverterFactory.create()) //增加返回值為Oservable<T>的支持 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build();
這里的baseUrl加上之前@POST("mobileLogin/submit.html")
定義的參數(shù)形成完整的請求地址;
addConverterFactory(ScalarsConverterFactory.create())
的意思是構(gòu)建了一個返回支持,如果你的Call對象的泛型接收另外的格式需要添加另外的支持,上述代碼已經(jīng)列出;
接下來我們用這個Retrofit對象創(chuàng)建一個RequestSerives接口對象,也就是我們之前定義的那個接口,并且得到我們的Call對象;
RequestSerives requestSerives = retrofit.create(RequestSerives.class);//這里采用的是Java的動態(tài)代理模式 Call<String> call = requestSerives.getString("userName", "1234");//傳入我們請求的鍵值對的值
利用得到的Call對象,然后我們就發(fā)出網(wǎng)絡(luò)請求了:
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的簡單介紹和使用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!
網(wǎng)頁標(biāo)題:AndroidRetrofit的簡單介紹和使用
本文地址:http://muchs.cn/article34/ihdsse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、域名注冊、企業(yè)建站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)