zoukankan      html  css  js  c++  java
  • RetrofitOkHttp网络请求

    public static final String HOST_URL="";
    public interface HttpUtils {
    
        @GET(API.URL)
        Call<Bean<NewslistBean>> NeeslistBean();
    
    }
    

      

    public interface NetWorkListener<T> {
        public void onSuccess(T t);
        public void onFailure(Exception e);
    }
    

      

    public class RetrofitHelper {
    
        private static OkHttpClient okHttpClient;
        private static HttpUtils httpUtils;
    
        /**
         * 静态代码块
         */
        static {
            initOkHttpClient();
        }
        /**
         * 初始化OkHttpClient
         */
        private static void initOkHttpClient(){
    
            if(okHttpClient==null){
                synchronized (RetrofitHelper.class){
                    if (okHttpClient==null){
                        //创建拦截器
                        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
                        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
                        //创建OkHttpClient
                        okHttpClient = new OkHttpClient.Builder()
                                .addInterceptor(loggingInterceptor)
                                .build();
                    }
                }
            }
    
        }
    
        /**
         * 初始化一个单例
         *
         */
        public static HttpUtils getHttpUtils(){
            if(httpUtils==null){
                synchronized (HttpUtils.class){
                    if(httpUtils==null){
                        httpUtils=RetrofitHelper.createAPI(HttpUtils.class,API.HOST_URL);
                    }
                }
            }
         return httpUtils;
        }
    
        public static <T> T createAPI(Class<T> tClass,String url){
    
            Retrofit retrofit = new Retrofit.Builder().baseUrl(url).client(okHttpClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            return retrofit.create(tClass);
        }
    }

      

     

    public class RetrofitHelper {
    
        private static OkHttpClient client;
        private static ServiceApi serviceApi;
    
        static {
            initOkHttp();
        }
        //初始化OkHttpClient
        private static void initOkHttp() {
            if (client == null) {
                synchronized (OkHttpClient.class) {
                    if (client == null) {
                        client = new OkHttpClient.Builder().build();
                    }
                }
            }
        }
    
        /**
         * 初始化一个单例
         * @return
         */
        public static ServiceApi getServiceApi() {
            if (serviceApi == null) {
                synchronized (ServiceApi.class) {
                    if (serviceApi == null) {
                        serviceApi = RetrofitHelper.create(ServiceApi.class, UrlUtils.BASE_URL);
                    }
                }
            }
            return serviceApi;
        }
        /**
         * 初始化Retrofit ,生成API方法
         *
         * @param tClass
         * @param url
         * @param <T>
         * @return
         */
        private static ServiceApi create(Class<ServiceApi> serviceApiClass, String baseUrl) {
            Retrofit re = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            return re.create(serviceApiClass);
        }
    
    }
    

      

    public class DataPresenter {
    
        private IMainActivity iMainActivity;
        private IGetModel iGetModel;
    
        public DataPresenter(IMainActivity iMainActivity){
            this.iMainActivity = iMainActivity;
            iGetModel = new GetModel();
        }
    
        public void getDatas(){
    
            /*iGetModel.getData(new OnListiner<Bean>() {
                @Override
                public void onSuccess(Bean bean) {
                    List<Bean.NewslistBean> newslist = bean.getNewslist();
                    iMainActivity.onShow(newslist);
                }
    
                @Override
                public void onFailure(Throwable throwable) {
    
                }
            });*/
            iGetModel.getData(new OnListiner<Bean>() {
                @Override
                public void onSuccess(Bean bean) {
                    List<Bean.NewslistBean> newslist = bean.getNewslist();
                    iMainActivity.onShow(newslist);
                }
    
                @Override
                public void onFailure(Throwable throwable) {
    
                }
            });
        }
    
    }
    

      

    public class GetModel implements IGetModel {
        @Override
        public void getData(final OnListiner<Bean> onListiner) {
            ServiceApi serviceApi = RetrofitHelper.getServiceApi();
            Call<Bean> data = serviceApi.getData();
            data.enqueue(new Callback<Bean>() {
                @Override
                public void onResponse(Call<Bean> call, Response<Bean> response) {
                    Bean body = response.body();
                    onListiner.onSuccess(body);
                }
    
                @Override
                public void onFailure(Call<Bean> call, Throwable t) {
                    onListiner.onFailure(t);
                }
            });
        }
    }
    

      

    public class MainActivity extends AppCompatActivity implements IMainActivity{
    
        private XRecyclerView mRc;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
           /* DataPresenter presenter = new DataPresenter(this);
            presenter.getDatas();*/
            DataPresenter presenter = new DataPresenter(this);
            presenter.getDatas();
            initView();
        }
    
        private void initView() {
            mRc = (XRecyclerView) findViewById(R.id.rc);
        }
    
        @Override
        public void onShow(List<Bean.NewslistBean> list) {
            MyAdapter adapter = new MyAdapter(this, list);
            mRc.setLayoutManager(new LinearLayoutManager(this));
            mRc.setAdapter(adapter);
            mRc.setLoadingListener(new XRecyclerView.LoadingListener() {
                @Override
                public void onRefresh() {
                    mRc.refreshComplete();
                }
    
                @Override
                public void onLoadMore() {
    
                }
            });
        }
    }
    

      

    item
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:fresco="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/ti"
                />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:id="@+id/des"
                />
    
        </LinearLayout>
    
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/img"
            fresco:roundAsCircle="true"
            android:layout_alignParentRight="true"></com.facebook.drawee.view.SimpleDraweeView>
    
    </RelativeLayout>
    

      

     

  • 相关阅读:
    vue keep-alive 缓存组件
    媒体查询手机屏幕横屏竖屏
    手机端rem
    vue技术栈导出pdf
    判断是否为微信浏览器还是支付宝浏览器
    当前时间和倒计时效果
    npm install 报错node-sass模块找不到
    Lenovo System x3650 设置管理接口地址
    Python之excel文件追加内容
    python3 文件操作
  • 原文地址:https://www.cnblogs.com/wsq110/p/7997433.html
Copyright © 2011-2022 走看看