- 创建服务核心类
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class HRetrofitClient {
private final static HServiceApi mServiceApi;
static {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
@Override
public void log(@NotNull String message) {
Log.i(“hxg_http”, message);
}
});
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.addInterceptor(logging)
.build();
Retrofit retrofit = new Retrofit.Builder()
//访问后台接口的主路径
.baseUrl(“https://www.xianghua.art/applets/”)
//添加解析转换工厂(Gson解析,Xml解析)
.addConverterFactory(GsonConverterFactory.create())
//添加 OkHttpClient
.client(okHttpClient)
.build();
//创建一个实例对象
mServiceApi = retrofit.create(HServiceApi.class);
}
//暴露出接口
public static HServiceApi getServiceApi() {
return mServiceApi;
}
}
- 对接口数据进行封装
在HBaseResult 可以进行是否正确返回判断
public class HBaseResult {
private int code;
private String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public boolean isOk() {
return 200 == code;
}
}
public class HResult extends HBaseResult {
public Object data;
}
对编写后台返回的数据javabean(注意要继承HBaseResult )
public class HLoginBean extends HBaseResult {
private String openId;
private int hasNickNameHeadUrl;
private String token;
private int hasPhone;
@Override
public String toString() {
return “LoginBean{” +
“openId='” + openId + ‘’’ +
“, hasNickNameHeadUrl=” + hasNickNameHeadUrl +
“, token='” + token + ‘’’ +
“, hasPhone=” + hasPhone +
‘}’;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public int getHasNickNameHeadUrl() {
return hasNickNameHeadUrl;
}
public void setHasNickNameHeadUrl(int hasNickNameHeadUrl) {
this.hasNickNameHeadUrl = hasNickNameHeadUrl;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public int getHasPhone() {
return hasPhone;
}
public void setHasPhone(int hasPhone) {
this.hasPhone = hasPhone;
}
}
- 封装返回泛型callback类
import com.alibaba.fastjson.JSON;
import java.lang.reflect.ParameterizedType;
import cn.yumakeji.module_network.bean.HResult;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
-
封装返回泛型
-
@param
*/
public abstract class HHttpCallback implements Callback<HResult> {
@Override
public void onResponse(Call<HResult> call, Response<HResult> response) {
HResult result = response.body();
if (!result.isOk()) {
onError(result.getCode(), result.getMessage());
return;
}
//解析,获取类上面的泛型
Class dataClass = (Class) ((ParameterizedType) this.getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
T data = JSON.parseObject(JSON.toJSONString(result.data), dataClass);
onSucceed(data);
}
@Override
public void onFailure(Call<HResult> call, Throwable t) {
//处理失败,联网,解析失败等
}
public abstract void onSucceed(T data);
public abstract void onError(int code, String msg);
}
- 请求后台访问数据的接口类
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BATJ 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
[外链图片转存中…(img-JFKRsnfM-1714408417097)]
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
[外链图片转存中…(img-lpOEH7n7-1714408417097)]
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!