Android请求网络工具类(OKHttp)

public class HttpUtils<T> {
    private HttpUtils (){}
    public static class HttpUtilsIns{
        private static HttpUtils httpUtils = new HttpUtils();
    }
    public static HttpUtils getInstance(){
        return HttpUtilsIns.httpUtils;
    }
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            T t = (T) msg.obj;
            mCallBackData.onResponse(t);
        }
    };
    private CallBackData mCallBackData;
    public void getData(String url,final Class<T> tClass,final CallBackData callBackData){
        this.mCallBackData = callBackData;
        OkHttpClient okHttpClient = new OkHttpClient.Builder().readTimeout(5,TimeUnit.SECONDS).writeTimeout(5,TimeUnit.SECONDS).build();
        Request request = new Request.Builder().url(url).get().build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                T t = gson.fromJson(string, tClass);
                Message message = handler.obtainMessage();
                message.obj = t;
                handler.sendMessage(message);
            }
        });
    }
    //HashMap<String,String> hashMap
    public void postData(String url, final Class<T> tClass, final CallBackData callBackData){
        this.mCallBackData = callBackData;
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                //.addNetworkInterceptor(new LogginInterceptor())
                .readTimeout(5, TimeUnit.SECONDS)
                .writeTimeout(5, TimeUnit.SECONDS)
                .build();
        FormBody.Builder builder = new FormBody.Builder();
        FormBody formBody = builder.build();
        Request request = new Request.Builder()
                .url(url)
                .post(formBody)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                T t = gson.fromJson(string, tClass);
                Message message = handler.obtainMessage();
                message.obj = t;
                handler.sendMessage(message);
            }
        });
    }
    public interface CallBackData<D>{
        public void onResponse(D d);
        public void onFail(String err);
    }
}

(随便发的代码块) 

public class BasePresenter<V> {
    private V view;

    public V getView() {
        return view;
    }

    public void setView(V view) {
        this.view = view;
    }

    public void detachView() {
        this.view = null;
    }
}
public class MainPresenter extends BasePresenter<IMainView<LoginBean>>{

    private final HttpUtils httpUtils;

    public MainPresenter(){
        httpUtils = HttpUtils.getInstance();
    }
    public void loadData(String acc,String pwd){
        httpUtils.postData(Constant.LOGIN+"?phone="+acc+"&pwd="+pwd,LoginBean.class,new HttpUtils.CallBackData<LoginBean>() {
            @Override
            public void onResponse(LoginBean loginBean) {
                getView().onSuccess(loginBean);
            }

            @Override
            public void onFail(String err) {
                getView().onErr(err);
            }
        });
    }
}
public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(setSelfView());
        initView();
        initData();
    }

    public abstract void initView();

    public abstract void initData();

    public abstract int setSelfView();
}
public class MainActivity extends BaseActivity implements IMainView<LoginBean> {

    private Button button;
    private EditText editText1;
    private EditText editText2;
    private MainPresenter presenter;
    private Button button3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
    }

    @Override
    public void initView() {
        button = findViewById(R.id.button1);
        button3 = findViewById(R.id.button3);
        editText1 = findViewById(R.id.editText1);
        editText2 = findViewById(R.id.editText2);
    }

    @Override
    public void initData() {

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String acc = editText1.getText().toString();
                String pwd = editText2.getText().toString();
                presenter = new MainPresenter();
                presenter.setView(MainActivity.this);
                presenter.loadData(acc,pwd);
            }
        });
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,RegisterActivity.class));
            }
        });
    }

    @Override
    public int setSelfView() {
        return R.layout.activity_main;
    }

    @Override
    public void onSuccess(LoginBean loginBean) {
        if(loginBean.getStatus().equals("0000")){
            startActivity(new Intent(MainActivity.this,NewsActivity.class));
            Toast.makeText(this, ""+loginBean.getMessage(), Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, ""+loginBean.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onErr(String errMsg) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.detachView();
    }
}
public interface IMainView<T> {
    public void onSuccess(T t);
    public void onErr(String errMsg);
}

猜你喜欢

转载自blog.csdn.net/weixin_43731179/article/details/87924007
今日推荐