package com.klisly.bookbox.api; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.klisly.bookbox.BookBoxApplication; import com.klisly.bookbox.logic.AccountLogic; import java.io.File; import java.util.concurrent.TimeUnit; import okhttp3.Cache; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import static anetwork.channel.http.NetworkSdkSetting.context; public class BookRetrofit { // public final static String BASE_URL = "http://10.0.0.25:3000/"; // public final static String BASE_URL = "http://192.168.1.4:3000/"; public final static String BASE_URL = "https://second.imdao.cn/"; public final static String BASE_API_URL = BASE_URL + "v1/"; private final static long DEFAULT_TIMEOUT = 5; // 15s超时 private final static Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") .serializeNulls() .create(); private static BookRetrofit instance; private AccountApi accountApi; private SiteApi siteApi; private TopicApi topicApi; private ArticleApi articleApi; private WxArticleApi wxArticleApi; private JokeApi jokeApi; private SysApi sysApi; private NovelApi novelApi; private OkHttpClient okHttpClient; public BookRetrofit() { context = BookBoxApplication.getInstance().getApplicationContext(); OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS); //设置缓存目录 try { if (context.getCacheDir() != null) { File cacheDirectory = new File(context.getCacheDir() .getAbsolutePath(), "HttpCache"); Cache cache = new Cache(cacheDirectory, 20 * 1024 * 1024); httpClientBuilder.cache(cache); } } catch (Exception e) { e.printStackTrace(); } okHttpClient = httpClientBuilder.build(); Retrofit retrofit = new Retrofit.Builder() .client(okHttpClient) .baseUrl(BASE_API_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); accountApi = retrofit.create(AccountApi.class); siteApi = retrofit.create(SiteApi.class); topicApi = retrofit.create(TopicApi.class); articleApi = retrofit.create(ArticleApi.class); sysApi = retrofit.create(SysApi.class); novelApi = retrofit.create(NovelApi.class); wxArticleApi = retrofit.create(WxArticleApi.class); jokeApi = retrofit.create(JokeApi.class); } /** * BookRetrofit * * @return single instance of ConversationLogic */ public static BookRetrofit getInstance() { if (instance == null) { synchronized (AccountLogic.class) { if (instance == null) { instance = new BookRetrofit(); } } } return instance; } public AccountApi getAccountApi() { return accountApi; } public SiteApi getSiteApi() { return siteApi; } public TopicApi getTopicApi() { return topicApi; } public ArticleApi getArticleApi() { return articleApi; } public NovelApi getNovelApi() { return novelApi; } public SysApi getSysApi() { return sysApi; } public OkHttpClient getOkHttpClient() { return okHttpClient; } public WxArticleApi getWxArticleApi() { return wxArticleApi; } public JokeApi getJokeApi() { return jokeApi; } }