云炬Android开发笔记 5-1,2网络框架接口创建
1.网络框架接口创建
1.1 使用的是第三方的框架
【第三方框架】Retrofit,封装一个通用的框架,可以使用RxJava和RxAndroid进行封装,比较难,这里不做讲解;
1.2 restful 请求
大家都知道"古代"网页是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。在RESTful架构下:
链接:https://www.zhihu.com/question/28557115/answer/48094438
1.3网络请求的具体实现类
【网络请求的具体实现类】
【添加依赖】添加依赖可以使用两种方式:【1】直接复制粘贴;【2】projectStucter寻找添加;
1 //网络请求依赖 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 直接转化来的,最直接的
【框架的搭建需要考虑的问题】明白需要使用什么模式,来什么要什么的是建造者模式是最好的。
【源码】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是以键值对的形式进行存储的;
29
30 /**
31 *
32 * @param url
33 * @param params
34 * @return
35 * FieldMap:请求体中包含的内容;
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 //避免一次性将所有的文件下载下来,导致内存的溢出;但是在写的时候,仍然需要将文件放在单独的线程,否则在主线程操作任然会报错。
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创建成功】构建OkHttp请求
1.5 【restService的创建】
1.6 创建get方法