网络请求工具类和mvp的封装

1.okhttp工具

public class OkHttpUtil {
    private static final String METHOD_GET = "GET";
    private static OkHttpClient client;
    private static RequestBody body;

    public OkHttpUtil() {
    }

    public static void init(){
        client = new OkHttpClient.Builder()
                .writeTimeout(3000,TimeUnit.MILLISECONDS)
                .readTimeout(3000,TimeUnit.MILLISECONDS)
                .build();
    }

    public static Request createRequest(String url,String method){
       Request request=new Request.Builder().url(url).build();
       switch (method){
           case METHOD_GET:
               body = request.body();
               break;
       }
       return request;
    }

    public static void get(String url, Callback callback){
        Request request = createRequest(url, METHOD_GET);
        Call call = client.newCall(request);
        call.enqueue(callback);
    }
}

2.view层

public interface View {
    void onSuccess(String result);
    void onFail(String msg);
}

3.model层

public class Model {
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };

    public void model(String url, final HttpData data){
       OkHttpUtil.get(url, new Callback() {
           @Override
           public void onFailure(Call call, IOException e) {

           }

           @Override
           public void onResponse(Call call, Response response) throws IOException {
               final String s = response.body().string();
               handler.post(new Runnable() {
                   @Override
                   public void run() {
                       data.Jk(s);
                   }
               });
           }
       });
    }

    //创建接口
    public interface HttpData{
        void Jk(String xn);
    }
}

4.persenter层

public class Persenter {
    private Model model;
    private View view;

    public Persenter( View view) {
        model=new Model();
        this.view = view;
    }

    public void pers(String url){
        model.model(url, new Model.HttpData() {
            @Override
            public void Jk(String xn) {
                if(xn!=null){
                    view.onSuccess(xn);
                }else{
                    view.onFail("数据失败");
                }
            }
        });
    }
}

4.主页面

public class FristFragment extends Fragment implements com.umeng.soexmple.yuekaocheng.view.View,TwoView {

    private RecyclerView recyclerView;
    private List<Htt.DataBean> list=new ArrayList<>();
    private String path="http://www.xieast.com/api/news/news.php?page=1";

    private String twopath="http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4";
    private List<TwoUser.DataBean> list2=new ArrayList<>();
    private RecyclerView twore;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_frist, container, false);
        recyclerView = view.findViewById(R.id.recycler);
        twore = view.findViewById(R.id.recyclertwo);


        Persenter persenter=new Persenter(this);
        persenter.pers(path);

        TwoPersenter persenter1=new TwoPersenter(this);
        persenter1.twomodel(path);
        return view;
    }

    @Override
    public void onSuccess(String result) {
        Gson gson=new Gson();
        Htt htt = gson.fromJson(result, Htt.class);
        List<Htt.DataBean> data = htt.getData();
        list.addAll(data);
        GridLayoutManager gridLayoutManager=new GridLayoutManager(getContext(),4);
        recyclerView.setLayoutManager(gridLayoutManager);
        MyAdapter adapter=new MyAdapter(list,getContext());
        recyclerView.setAdapter(adapter);
    }

    @Override
    public void onFail(String msg) {

    }

    @Override
    public void onDataSuccess(String cheng) {
           Gson gson=new Gson();
          TwoUser twoUser = gson.fromJson(cheng, TwoUser.class);
           List<TwoUser.DataBean> data = twoUser.getData();
        LinearLayoutManager manager=new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
        twore.setLayoutManager(manager);
        list2.addAll(data);
        TwoAdapter adapter=new TwoAdapter(list,getContext());
        twore.setAdapter(adapter);

    }

    @Override
    public void onDataFail(String shi) {

    }
}

5.初始化网路请求
6.设置网络权限

猜你喜欢

转载自blog.csdn.net/qq_42828293/article/details/84727374
今日推荐