云炬Android开发笔记 5-1,2网络框架接口创建

1.网络框架接口创建

1.1 使用的是第三方的框架

【第三方框架】Retrofit,封装一个通用的框架,可以使用RxJava和RxAndroid进行封装,比较难,这里不做讲解;

云炬Android开发笔记 5-1,2网络框架接口创建

 

1.2 restful 请求

大家都知道"古代"网页是前端后端融在一起的,比如之前的PHP,JSP等。在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。在RESTful架构下:

云炬Android开发笔记 5-1,2网络框架接口创建

链接:https://www.zhihu.com/question/28557115/answer/48094438

1.3网络请求的具体实现类

【网络请求的具体实现类】

云炬Android开发笔记 5-1,2网络框架接口创建

【添加依赖】添加依赖可以使用两种方式:【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 直接转化来的,最直接的

 云炬Android开发笔记 5-1,2网络框架接口创建

【框架的搭建需要考虑的问题】明白需要使用什么模式,来什么要什么的是建造者模式是最好的。

 云炬Android开发笔记 5-1,2网络框架接口创建

【源码】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 }

【封装枚举类】

云炬Android开发笔记 5-1,2网络框架接口创建

【传入ip地址】

云炬Android开发笔记 5-1,2网络框架接口创建

云炬Android开发笔记 5-1,2网络框架接口创建

云炬Android开发笔记 5-1,2网络框架接口创建

【RetrofitHolder创建成功】构建OkHttp请求

云炬Android开发笔记 5-1,2网络框架接口创建

 

1.5 【restService的创建】

云炬Android开发笔记 5-1,2网络框架接口创建

 

1.6 创建get方法

云炬Android开发笔记 5-1,2网络框架接口创建