--------------------------------------------------------HttpUtils------------------------------------------------------
public class HttpUtils {
private static HttpUtils httpUtils;
private final OkHttpClient okHttpClient;
public HttpUtils(){
okHttpClient = new OkHttpClient().newBuilder().addInterceptor(new longinterceptor()).build();//new拦截器
}
//自定义拦截器
class longinterceptor implements Interceptor{
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = chain.request().newBuilder().addHeader("source", "android");
Log.d("xxxxxx", "request:" + request);
Response proceed = chain.proceed(request);
return proceed;
}
}
public static HttpUtils getHttpUtils() {
if(httpUtils==null){
synchronized (HttpUtils.class){
if(httpUtils==null){
httpUtils = new HttpUtils();
}
}
}
return httpUtils;
}
public void getdata(String path, Callback callback){
Request request = new Request.Builder().url(path).build();
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
}
--------------------------------------------------------Icontract------------------------------------------------------
public interface Icontract {
interface iview{
void data(String s);
}
interface ipresenter{
void attchview(iview iview);
void datachview(iview iview);
void requestinfo();
}
interface imoudle{
interface callisten{
void requestmsg(String s);
}
void requestdata(callisten callisten);
}
}
--------------------------------------------------------Moudleimp------------------------------------------------------
package com.example.dell.ykmn.di;
import com.example.dell.ykmn.utils.HttpUtils;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class Moudleimp implements Icontract.imoudle{
private String path=“https://www.zhaoapi.cn/product/getCarts?uid=71”;
@Override
public void requestdata(final callisten callisten) {
HttpUtils.getHttpUtils().getdata(path, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
callisten.requestmsg(s);
}
});
}
}
--------------------------------------------------------Presenterimp------------------------------------------------------
package com.example.dell.ykmn.di;
import java.lang.ref.WeakReference;
public class Presenterimp implements Icontract.ipresenter<Icontract.iview>{
private Icontract.iview iview;
private Moudleimp moudleimp;
private WeakReference<Icontract.iview> iviewWeakReference;
private WeakReference<Icontract.imoudle> imoudleWeakReference;
@Override
public void attchview(Icontract.iview iview) {
this.iview = iview;
moudleimp = new Moudleimp();
iviewWeakReference = new WeakReference<>(iview);
imoudleWeakReference = new WeakReference<Icontract.imoudle>(moudleimp);
}
@Override
public void datachview(Icontract.iview iview) {
iviewWeakReference.clear();
imoudleWeakReference.clear();
}
@Override
public void requestinfo() {
moudleimp.requestdata(new Icontract.imoudle.callisten() {
@Override
public void requestmsg(String s) {
iview.data(s);
}
});
}
}