HttpUtil
import android.os.Environment;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.Cache;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
/**
* 作者:ww
* <p>
* 邮箱:
* <p>
* 时间:on 2019/4/20 11:29
*/
public class HttpUtil {
private HttpUtilListener httpUtilListener;
private String baseUrl = "http://172.17.8.100";
//传递头参
private Map<String, String> headMap = new HashMap<>();
public void setHead(Map<String, String> headMap) {
this.headMap = headMap;
}
//get请求
public HttpUtil get(String url, Map<String, String> map) {
File file=new File(Environment.getExternalStorageDirectory().getAbsolutePath());
long size=1024*10;
//添加拦截器
OkHttpClient client=new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
return chain.proceed(request);
}
}).cache(new Cache(file,size)).build();
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(baseUrl).build();
HttpService service = retrofit.create(HttpService.class);
service.get(url, headMap, map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ResponseBody responseBody) {
try {
String data = responseBody.string();//返回的数据
httpUtilListener.success(data);
} catch (Exception e) {
String message = e.getMessage();//错误的信息
httpUtilListener.fail(message);
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
return this;
}
//方法
public void result(HttpUtilListener httpUtilListener) {
this.httpUtilListener = httpUtilListener;
}
//接口回调
public interface HttpUtilListener {
void success(String data);
void fail(String error);
}
}
HttpService
@GET
Observable<ResponseBody> get(@Url String url, @HeaderMap Map<String,String> headMap, @QueryMap Map<String,String> map);