HttpUtils
public class HttpUtils {
public final Api api;
//单例
private HttpUtils(){
final SharedPreferences sp = BaseApplication.sharedPreferences;
//拦截器,统一请求头
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.addHeader("ak",""+sp.getString("ak",""))
.addHeader("userId", ""+sp.getInt("userId",0))
.addHeader("sessionId", ""+sp.getString("sessionId",""))
.addHeader("Content-Type",""+sp.getString("Content-Type",""))
.build();
Response response = chain.proceed(request);
Log.e("sessionId",sp.getString("sessionId",""));
Log.e("userId",""+sp.getInt("userId",0));
Log.e("===========","拦截"+response);
return response;
}
}).build();
//实例化
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://172.17.8.100/health/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(okHttpClient)
.build();
api = retrofit.create(Api.class);
}
private static class instance{
private static final HttpUtils httpUtils = new HttpUtils();
}
public static HttpUtils getInstance(){
return instance.httpUtils;
}
//网络判断
public boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
}
//判断WIFI网络是否可用
public boolean isWifiConnected(Context context) { if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWiFiNetworkInfo != null) {
return mWiFiNetworkInfo.isAvailable();
}
}
return false;
}
}
Api
2.public interface Api {
//发送验证码
@FormUrlEncoded
@POST("user/v1/sendOutEmailCode")
Observable<SendOutEmailCodeBean> getSendOutEmailCode(@Field("email") String email);
//注册
@FormUrlEncoded
@POST("user/v1/register")
Observable<RegisterBean> getRegister(@Field("email") String email, @Field("code") String code, @Field("pwd1") String pwd1, @Field("pwd2") String pwd2, @Field("invitationCode") String invitationCode);
//登录
@FormUrlEncoded
@POST("user/v1/login")
Observable<LoginBean> getLogin(@Field("email") String email, @Field("pwd") String pwd);
//根据用户ID查询用户信息
@GET("user/verify/v1/getUserInfoById")
Observable<GetUserInfoByIdBean> getUserInfoById();
}
BasePresenter
public class BasePresenter<V extends BaseView> {
private V view;
public void setView(V view) {
this.view = view;
}
public V getView() {
return view;
}
public void detachView(){
this.view=null;
}
}
BaseActivty
public abstract class BaseActivity extends AppCompatActivity {
private Unbinder bind;
private ImmersionBar immersionBar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(setContentView());
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 禁止所有的activity横屏
bind = ButterKnife.bind(this);
immersionBar = ImmersionBar.with(this);
immersionBar.statusBarDarkFont(true, 0.2f)
.init();
initData();
}
@Override
protected void onDestroy() {
super.onDestroy();
bind.unbind();
}
public abstract void initData();
public abstract int setContentView();
}
BaseFragment
public abstract class BaseFragment extends Fragment {
private Unbinder bind;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(ContentView(),container,false);
bind = ButterKnife.bind(this, view);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
bind.unbind();
}
//懒加载
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if(isVisibleToUser){
initData();
}
super.setUserVisibleHint(isVisibleToUser);
}
@Override
public void onStart() {
super.onStart();
if(getUserVisibleHint()){
initData();
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();
}
public abstract void initView();
public abstract void initData();
public abstract int ContentView();
}
BaseView
public interface BaseView {
void onSuccess(Object o);
void onFail(String msg);
}
Presenter
public class MainHomePresenter extends BasePresenter {
private final HttpUtils instance;
public MainHomePresenter() {
instance = HttpUtils.getInstance ();
}
//查询科室列表
public void getAdministrative(){
Observable<DepartmentBean> administrative = instance.api.getAdministrative ();
administrative.subscribeOn (Schedulers.io ())
.observeOn (AndroidSchedulers.mainThread ())
.subscribe (new Observer<DepartmentBean> () {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
getView ().onFail (e.getMessage ());
}
@Override
public void onNext(DepartmentBean departmentBean) {
getView ().onSuccess (departmentBean);
}
});
}