/**
* 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網絡請求