创建Api接口类
public interface Api {
@POST
Observable<ResponseBody> doPost(@Url String url,@QueryMap HashMap<String ,String> map);
@GET
Observable<ResponseBody> doGet(@Url String url);
@GET
Observable<ResponseBody> doGetMap(@Url String url,@QueryMap HashMap<String ,String> map);
}
RetrofitUtils类封装
public class RetrofitUtils {
public static String nei = "http://172.17.8.100/";
public static String wai = "http://mobile.bwstudent.com";
public static Api api;
private OkHttpClient okHttpClient;
private static RetrofitUtils utils;
private final Retrofit retrofit;
private RetrofitUtils() {
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.build();
Response proceed = chain.proceed(request);
return proceed;
}
}).build();
retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(nei )
.client(okHttpClient)
.build();
}
public static RetrofitUtils getInstance() {
if (utils == null) {
utils = new RetrofitUtils();
}
return utils;
}
public <T>T create(Class<T> classes){
return retrofit.create(classes);
}
}
M层进行调用
public class MyModel {
MyCallback myCallback;
public void postRequest(String url, HashMap<String,String>map, final Class aClass){
RetrofitUtils.getInstance()
.create(Api.class)
.doPost(url,map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableObserver<ResponseBody>() {
@Override
public void onNext(ResponseBody responseBody) {
try {
String string = responseBody.string();
Gson gson = new Gson();
Object suc = gson.fromJson(string, aClass);
myCallback.Success(suc);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
public void getRequest(String url, final Class aClass){
RetrofitUtils.getInstance()
.create(Api.class)
.doGet(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableObserver<ResponseBody>() {
@Override
public void onNext(ResponseBody responseBody) {
try {
String string = responseBody.string();
Gson gson = new Gson();
Object suc = gson.fromJson(string, aClass);
myCallback.Success(suc);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}