云炬Android开发笔记 5-1,2网络框架接口创建
1.網(wǎng)絡(luò)框架接口創(chuàng)建
1.1 使用的是第三方的框架
【第三方框架】Retrofit,封裝一個(gè)通用的框架,可以使用RxJava和RxAndroid進(jìn)行封裝,比較難,這里不做講解;
?
1.2 restful 請(qǐng)求
大家都知道"古代"網(wǎng)頁是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面時(shí)代問題不大,但是近年來移動(dòng)互聯(lián)網(wǎng)的發(fā)展,各種類型的Client層出不窮,RESTful可以通過一套統(tǒng)一的接口為 Web,iOS和Android提供服務(wù)。另外對(duì)于廣大平臺(tái)來說,比如Facebook platform,微博開放平臺(tái),微信公共平臺(tái)等,它們不需要有顯式的前端,只需要一套提供服務(wù)的接口,于是RESTful更是它們最好的選擇。在RESTful架構(gòu)下:
鏈接:https://www.zhihu.com/question/28557115/answer/48094438
1.3網(wǎng)絡(luò)請(qǐng)求的具體實(shí)現(xiàn)類
【網(wǎng)絡(luò)請(qǐng)求的具體實(shí)現(xiàn)類】
【添加依賴】添加依賴可以使用兩種方式:【1】直接復(fù)制粘貼;【2】projectStucter尋找添加;
1 //網(wǎng)絡(luò)請(qǐng)求依賴 2 compile 'com.squareup.okio:okio:1.13.0' 3 compile 'com.squareup.okhttp3:okhttp:3.8.1' 4 compile 'com.squareup.retrofit2:retrofit:2.3.0' 5 compile 'com.squareup.retrofit2:converter-scalars:2.3.0' //以string 直接轉(zhuǎn)化來的,最直接的?
【框架的搭建需要考慮的問題】明白需要使用什么模式,來什么要什么的是建造者模式是最好的。
?
【源碼】com.flj.latte.net.RestService接口的封裝
1 package com.flj.latte.net;2 3 import java.util.WeakHashMap;4 5 import okhttp3.MultipartBody;6 import okhttp3.RequestBody;7 import okhttp3.ResponseBody;8 import retrofit2.Call;9 import retrofit2.http.Body; 10 import retrofit2.http.DELETE; 11 import retrofit2.http.FieldMap; 12 import retrofit2.http.FormUrlEncoded; 13 import retrofit2.http.GET; 14 import retrofit2.http.Multipart; 15 import retrofit2.http.POST; 16 import retrofit2.http.PUT; 17 import retrofit2.http.Part; 18 import retrofit2.http.QueryMap; 19 import retrofit2.http.Streaming; 20 import retrofit2.http.Url; 21 22 /** 23 * Created by 傅令杰 on 2017/4/2 24 */ 25 public interface RestService { 26 27 @GET //不傳遞任何的路由信息 28 Call<String> get(@Url String url, @QueryMap WeakHashMap<String, Object> params); //QueryMap是以鍵值對(duì)的形式進(jìn)行存儲(chǔ)的; 29 30 /** 31 * 32 * @param url 33 * @param params 34 * @return 35 * FieldMap:請(qǐng)求體中包含的內(nèi)容; 36 */ 37 @FormUrlEncoded 38 @POST //不傳遞任何的路由信息 39 Call<String> post(@Url String url, @FieldMap WeakHashMap<String, Object> params); 40 41 @POST 42 Call<String> postRaw(@Url String url, @Body RequestBody body); 43 44 @FormUrlEncoded 45 @PUT 46 Call<String> put(@Url String url, @FieldMap WeakHashMap<String, Object> params); 47 48 @PUT 49 Call<String> putRaw(@Url String url, @Body RequestBody body); 50 51 @DELETE 52 Call<String> delete(@Url String url, @QueryMap WeakHashMap<String, Object> params); 53 54 @Streaming //避免一次性將所有的文件下載下來,導(dǎo)致內(nèi)存的溢出;但是在寫的時(shí)候,仍然需要將文件放在單獨(dú)的線程,否則在主線程操作任然會(huì)報(bào)錯(cuò)。 55 @GET 56 Call<ResponseBody> download(@Url String url, @QueryMap WeakHashMap<String, Object> params); 57 58 @Multipart 59 @POST 60 Call<String> upload(@Url String url, @Part MultipartBody.Part file); 61 }【封裝枚舉類】
【傳入ip地址】
【RetrofitHolder創(chuàng)建成功】構(gòu)建OkHttp請(qǐng)求
?
1.5 【restService的創(chuàng)建】
?
1.6 創(chuàng)建get方法
?
總結(jié)
以上是生活随笔為你收集整理的云炬Android开发笔记 5-1,2网络框架接口创建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云炬Android开发笔记 使用新版本A
- 下一篇: 云炬Android开发笔记 5-3,4