package com.qxcm.moduleutil.http; //import com.blankj.utilcode.util.LogUtils; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import com.blankj.utilcode.util.ToastUtils; import com.franmontiel.persistentcookiejar.ClearableCookieJar; import com.franmontiel.persistentcookiejar.PersistentCookieJar; import com.franmontiel.persistentcookiejar.cache.SetCookieCache; import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; import com.qxcm.moduleutil.base.CommonAppContext; import com.qxcm.moduleutil.bean.AlbumBean; import com.qxcm.moduleutil.bean.CircleListBean; import com.qxcm.moduleutil.bean.CommentBean; import com.qxcm.moduleutil.bean.ExpandColumnBean; import com.qxcm.moduleutil.bean.GiftLabelBean; import com.qxcm.moduleutil.bean.HeatedBean; import com.qxcm.moduleutil.bean.NewsDataBean; import com.qxcm.moduleutil.bean.PersonaltyBean; import com.qxcm.moduleutil.bean.RealNameBean; import com.qxcm.moduleutil.bean.RewardUserBean; import com.qxcm.moduleutil.bean.RoonGiftModel; import com.qxcm.moduleutil.bean.UserBean; import com.qxcm.moduleutil.bean.UserInfo; import com.qxcm.moduleutil.bean.UserTagBean; import com.qxcm.moduleutil.bean.zhuangb.ZhuangBanShangChengBean; import com.qxcm.moduleutil.utils.SpUtil; import com.qxcm.moduleutil.utils.SystemUtils; import com.qxcm.moduleutil.utils.logger.DataLogger; import com.qxcm.moduleutil.utils.logger.DataLoggingInterceptor; import java.io.File; import java.net.Proxy; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import okhttp3.Cache; import okhttp3.OkHttpClient; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; public class RetrofitClient { private static RetrofitClient INSTANCE; private static ApiServer sApiServer; public static final int DEFAULT_TIME_OUT = 60; private static OkHttpClient client; private final Retrofit mRetrofit; public OkHttpClient getHttpClient() { return client; } File cacheFile = new File(CommonAppContext.getInstance().getCacheDir(), "cache"); Cache cache = new Cache(cacheFile, 1024 * 1024 * 100); // 100MB 的缓存空间 boolean isNetworkAvailable = checkNetworkConnection(); // 实现这个方法来检查网络状态 String cacheControl = isNetworkAvailable ? "max-age=0" : "only-if-cached, max-stale=86400"; private boolean checkNetworkConnection() { ConnectivityManager connectivityManager = (ConnectivityManager) CommonAppContext.getInstance().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnected(); } private OkHttpClient provideOkHttpClient() { Map headers = SystemUtils.getSystemParams(); SetCookieCache cookieCache = new SetCookieCache(); ClearableCookieJar cookieJar = new PersistentCookieJar(cookieCache, new SharedPrefsCookiePersistor(CommonAppContext.getInstance())); try { X509TrustManager trustAllCert = new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[]{}; } }; SSLContext sslContext = null; sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, new TrustManager[]{trustAllCert}, new SecureRandom()); final OkHttpClient client = new OkHttpClient.Builder() // .addInterceptor(new LoggerInterceptor("HttpLog", true)) .addInterceptor(new DataLoggingInterceptor(new DataLogger())) .addInterceptor(new AccessTokenInterceptor(headers)) .proxy(Proxy.NO_PROXY) .sslSocketFactory(sslContext.getSocketFactory(), trustAllCert) .hostnameVerifier((hostname, session) -> true) .cookieJar(cookieJar) .connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS) .readTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS) .writeTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS) .build(); RetrofitClient.client = client; } catch (KeyManagementException | NoSuchAlgorithmException e) { throw new RuntimeException(e); } return client; } private Retrofit provideRetrofit(OkHttpClient client) { return new Retrofit.Builder() .addConverterFactory(MyConverterFactory.create())/**/ // .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .baseUrl(CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()) .client(client) .build(); } // private static Retrofit mRainRetrofit; // // public static Retrofit getRainRetrofit() { // if (mRainRetrofit == null) { // synchronized (RetrofitClient.class) { // mRainRetrofit = new Retrofit.Builder() // .addConverterFactory(RainConverterFactory.create()) // .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) // .baseUrl(BuildConfig.RAIN_GAME_BASE_URL) // .client(client) // .build(); // } // } // return mRainRetrofit; // } private RetrofitClient() { mRetrofit = provideRetrofit(provideOkHttpClient()); sApiServer = mRetrofit.create(ApiServer.class); } public static RetrofitClient getInstance() { if (INSTANCE == null) { synchronized (RetrofitClient.class) { if (INSTANCE == null) { INSTANCE = new RetrofitClient(); } } } return INSTANCE; } public T createApiClient(Class apiClientClass) { return mRetrofit.create(apiClientClass); } public void login() { // login("18473492252", "123456"); // login("18229732986", "123456"); } public void sendCode(String mobile,String event,BaseObserver observer) { sApiServer.sendCode(mobile,event).compose(new DefaultTransformer<>()).subscribe(observer); } public void login(String mobile, String password, BaseObserver> observer) { sApiServer.login(mobile, password).compose(new DefaultTransformer<>()).subscribe(observer); } public void userLogin(String mobile, String password, BaseObserver> observer) { sApiServer.userLogin(mobile, password).compose(new DefaultTransformer<>()).subscribe(observer); } public void upUserNickname(BaseObserver observer){ sApiServer.upUserNickname().compose(new DefaultTransformer<>()).subscribe(observer); } public void upUserPic(String sex,BaseObserver observer){ sApiServer.upUserPic(sex).compose(new DefaultTransformer<>()).subscribe(observer); } public void switchAccounts(String loginId, BaseObserver> observer){ sApiServer.switchAccounts(loginId).compose(new DefaultTransformer<>()).subscribe(observer); } public void userUpdate(Map map, BaseObserver observer) { sApiServer.userUpdate(map).compose(new DefaultTransformer<>()).subscribe(observer); } public void authorization(BaseObserver observer){ sApiServer.authorization().compose(new DefaultTransformer<>()).subscribe(observer); } public void oauthLogin(String netease_token, BaseObserver> observer) { sApiServer.oauthLogin(netease_token).compose(new DefaultTransformer<>()).subscribe(observer); } public void authCode(String netease_token,int type, BaseObserver> observer) { if (type==1){ sApiServer.authCode1(netease_token).compose(new DefaultTransformer<>()).subscribe(observer); }else { sApiServer.authCode(netease_token).compose(new DefaultTransformer<>()).subscribe(observer); } } public void realName(String real_name, String card_number,BaseObserver observer){ sApiServer.realName(real_name,card_number).compose(new DefaultTransformer<>()).subscribe(observer); } //获取扩列数据 public void getExpandColumn(String type,String page,String page_limit,BaseObserver> observer){ sApiServer.getExpandColumn(type).compose(new DefaultTransformer<>()).subscribe(observer); } //获取官方公告数据或者系统消息,根据type区分 type=1是系统消息,type=2是官方公告 public void getOfficialNotice(String page,String page_limit,String type,BaseObserver> observer){ sApiServer.getOfficialNotice(page,page_limit,type).compose(new DefaultTransformer<>()).subscribe(observer); } public void getAlbumList(String page,String page_limit,String userId,BaseObserver> observer){ sApiServer.getAlbumList(page,page_limit,userId).compose(new DefaultTransformer<>()).subscribe(observer); } public void getRewardList(String id, int page, int page_limit,BaseObserver > observer){ sApiServer.getRewardList(id,page,page_limit).compose(new DefaultTransformer<>()).subscribe(observer); } public void getGiftLabel(String have_hot,BaseObserver> observer){ sApiServer.getGiftLabel(have_hot).compose(new DefaultTransformer<>()).subscribe(observer); } public void getGiftList( int type, BaseObserver> observer){ sApiServer.getGiftList(type).compose(new DefaultTransformer<>()).subscribe(observer); } public void topicList(String page,String page_limit,BaseObserver> observer){ sApiServer.topicList(page,page_limit).compose(new DefaultTransformer<>()).subscribe(observer); } public void getCategories(BaseObserver> observer){//动态顶部热门话题 sApiServer.getCategories().compose(new DefaultTransformer<>()).subscribe(observer); } public void getCircleList(String page,String page_limit,BaseObserver> observer){//动态列表 sApiServer.getCircleList(page,page_limit).compose(new DefaultTransformer<>()).subscribe(observer); } public void getCircleUserList(String user_id,String page,String page_limit,BaseObserver> observer){//用户主页动态列表 sApiServer.getCircleUserList(user_id,page,page_limit).compose(new DefaultTransformer<>()).subscribe(observer); } public void topicId(String topic_id,BaseObserver> observer){//动态列表 sApiServer.topicId(topic_id).compose(new DefaultTransformer<>()).subscribe(observer); } public void zoneDetail(String topic_id,BaseObserver observer){//动态列表 sApiServer.zoneDetail(topic_id).compose(new DefaultTransformer<>()).subscribe(observer); } public void getUserHome(String user_id,BaseObserver observer){ sApiServer.getUserHome(user_id).compose(new DefaultTransformer<>()).subscribe(observer); } public void getCommentList(String id, String page, String page_limit, BaseObserver observer){ sApiServer.getCommentList(id,page,page_limit).compose(new DefaultTransformer<>()).subscribe(observer); } public void getMyInfo(BaseObserver observer){//点击我的获取数据 sApiServer.getMyInfo().compose(new DefaultTransformer<>()).subscribe(observer); } public void getUserTagList(BaseObserver> observer){ sApiServer.getUserTagList().compose(new DefaultTransformer<>()).subscribe(observer); } public void getLikeList(String id,BaseObserver> observer){ sApiServer.getLikeList(id).compose(new DefaultTransformer<>()).subscribe(observer); } public void getAlbumDetail(String albumId, String pwd,String page,String page_limit,BaseObserver observer){ sApiServer.getAlbumDetail(albumId,pwd,page,page_limit).compose(new DefaultTransformer<>()).subscribe(observer); } public void getPersonaltyList(BaseObserver> observer){ sApiServer.getPersonaltyList().compose(new DefaultTransformer<>()).subscribe(observer); } public void getDecorateList(String type,BaseObserver> observer){ sApiServer.getDecorateList(type).compose(new DefaultTransformer<>()).subscribe(observer); } public void setUserDecorate(String decorateId,BaseObserver observer){ sApiServer.setUserDecorate(decorateId).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void publishZone(String images, String content, String topic_id, String room_id,String ip,BaseObserver observer){ sApiServer.publishZone(images,content,topic_id,room_id,ip).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void likeZone(String zone_id,BaseObserver observer){ sApiServer.likeZone(zone_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void deleteComment(String id,BaseObserver observer){ sApiServer.deleteComment(id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void deleteZone(String id,BaseObserver observer){ sApiServer.deleteZone(id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void commentZone(String id, String content, String pid, String reply_to,BaseObserver observer){ sApiServer.commentZone(id,content,pid,reply_to).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void clearLoginInfo(BaseObserver observer){ sApiServer.clearLoginInfo(SpUtil.getToken()).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void cancel(BaseObserver observer){ sApiServer.cancel(SpUtil.getToken()).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void getPostData(String new_password, String mobile, String code, String userId,BaseObserver observer){ sApiServer.getPostData(new_password,mobile,code,userId).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); if (t.toString().contains("登录失效")){ try { CommonAppContext.getInstance().clearLoginInfo(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } } }); } public void forgotPassword(String new_password,String mobile, String sms_code, BaseObserver observer){ sApiServer.forgotPassword(new_password,mobile,sms_code).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void createAlbum(String name,String pwd,String image,BaseObserver observer) { sApiServer.createAlbum(name,pwd,image).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void editAlbum(String album_id,String name,String pwd,String image,BaseObserver observer){ sApiServer.editAlbum(album_id,name,pwd,image).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void editUserInfo(int type,String nickname, String birthday, String sex, String avatar, String images, String profile, String tag_id,BaseObserver observer){ if (type == 1) { sApiServer.editUserInfo(nickname, birthday, sex, avatar, images, profile, tag_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } else{ sApiServer.editUserBg(images).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } } public void userGuanz(String user_id,String type,BaseObserver observer){ sApiServer.userGuanz(user_id,type).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void upAddAlbum(String album_id,String images,String content,BaseObserver observer){ sApiServer.upAddAlbum(album_id,images,content).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void moveAlbum(String id,String new_album_id,BaseObserver observer){ sApiServer.moveAlbum(id,new_album_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void deleteAlbum(String id,int type,BaseObserver observer){ if (type == 1) { sApiServer.deleteAlbumImage(id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response, observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); }else { sApiServer.deleteAlbum(id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response, observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } } public void likeAlbum(String albumId,BaseObserver observer){ sApiServer.likeAlbum(albumId).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { onNextRetu(response,observer); } @Override public void onFailure(Call> call, Throwable t) { com.blankj.utilcode.util.ToastUtils.showShort(t.toString()); } }); } public void onNextRetu(Response> response,BaseObserver observer){ if (response.code() == 200) { BaseModel string = response.body(); if (string != null) { int code = string.getCode(); if (code == 1) { observer.onNext(string.getMsg()); } else if (code == 301) { try { CommonAppContext.getInstance().clearLoginInfo(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } com.blankj.utilcode.util.ToastUtils.showShort(string.getMsg()); } } } } }