網絡請求

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章