/** * Retrofit帮助类 */ public class RetrofitHelper {
/** 测试服务器路劲*/// private static final String API_SERVER = “http://”; /* 正式服务器路径/ private static final String API_SERVER = “https://”; //接口
private static OkHttpClient mClient; private Retrofit mRetrofit; private RetrofitHelper() { mClient = OkHttpClientHelper.getInstance().getOkHttpClient(); } private static RetrofitHelper helper; //单例 保证对象唯一 public static RetrofitHelper getInstance() { if (helper == null) { synchronized (RetrofitHelper.class) { if (helper == null) { helper = new RetrofitHelper(); } } } return helper; } //获取Retrofit对象 public Retrofit getRetrofit() { if (mClient == null) { mClient = OkHttpClientHelper.getInstance().getOkHttpClient(); } if (mRetrofit == null) { mRetrofit = new Retrofit.Builder() .baseUrl(API_SERVER + "/") // .addConverterFactory(GsonConverterFactory.create()) //添加Gson支持 //TODO 修改--java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread. .addConverterFactory(GsonConverterFactory.create(new Gson())) //添加Gson支持 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //添加RxJava支持 .client(mClient) //关联okhttp .build(); } return mRetrofit; }}
public class HttpUtils {
private static INetService mService = getService(); /** * 首页的数据 */ public static void requestGetHomeData(String alt, Subscriber subscriber) { setSubscriber(mService.getHomeDataPost(alt), subscriber); } //订阅事件 public static <T> void setSubscriber(Observable<T> observable, Subscriber<T> subscriber) { // observable.subscribeOn(Schedulers.newThread()) // .observeOn(AndroidSchedulers.mainThread()) // .subscribe(subscriber); observable.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.newThread())//子线程访问网络 .observeOn(AndroidSchedulers.mainThread()) //回调到主线程 .subscribe(subscriber); } //获取服务对象 private static INetService getService() { if (mService == null) { mService = RetrofitHelper.getInstance() .getRetrofit() .create(INetService.class); } return mService; }}
/** * service统一接口数据 */ public interface INetService {
//express/query?act=5a58ca2893748f3b /** * 首页数据 */ @FormUrlEncoded @POST(“index) Observable<Entity> getHomeDataPost(@Field("act") String act);}
简单的retrofit2—-RxJava—okhttp网络请求