Okhttp封装,结合ImageLoader,


布局文件在这里就不声明了,根据自己的需求创建吧!!!

导入OkHttp,Gson依赖

compile 'com.zhy:okhttputils:2.0.0'
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'



清单文件声明权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>



Acticity的操作

package shizhaoyu1506b20170825.okhttp;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.io.IOException;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ImageView image_pic;
    private  String URL="http://169.254.4.76/mobile/index.php?act=goods&op=goods_list&page=100";


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


        initView();



        initData();

    }

    private void initData() {



        HttpUils.getHttpUtils(MainActivity.this).get(URL, ShopBean.class, new ResultData() {
            @Override
            public void onSuccess(BaseBean baseBean) throws IOException {
                ShopBean shopBean = (ShopBean) baseBean;
                List<ShopBean.DatasBean.GoodsListBean> goods_list = shopBean.getDatas().getGoods_list();
                App application = (App) getApplication();
                ImageLoader imageLoader = application.setImage();
                imageLoader.displayImage(goods_list.get(0).getGoods_image_url(),image_pic);

            }
        });

    }

    private void initView() {

         image_pic = (ImageView) findViewById(R.id.watch_pic);

    }
}
 
声明接口回调
 
package shizhaoyu1506b20170825.okhttp;

import java.io.IOException;

/**
 * 类用途:
 * 作者:史曌宇
 */

public interface ResultData {

    public void onSuccess(BaseBean baseBean) throws IOException;


}

 
 创建App类  完成ImageLoder的初始化
package shizhaoyu1506b20170825.okhttp;

import android.app.Application;
import android.content.Context;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * 类用途:
 * 作者:史曌宇
 */

public class App extends Application {

    private Context context;
    private ImageLoader mImageLoader;


    @Override
    public void onCreate() {
        super.onCreate();

        initImageLoader();
    }

    private  void initImageLoader() {

        DisplayImageOptions options=new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .showImageOnLoading(R.mipmap.ic_launcher)
                .build();
        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
                .defaultDisplayImageOptions(options)
                .build();
        mImageLoader = ImageLoader.getInstance();
        mImageLoader.init(configuration);



    }

    public   ImageLoader setImage(){


        return mImageLoader;
    }


}

在清单文件注册

android:name=".App"


创建网络请求类,基于OkHttp框架请求数据

package shizhaoyu1506b20170825.okhttp;

import android.app.AlertDialog;
import android.content.Context;
import android.util.Log;

import com.google.gson.Gson;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import java.io.IOException;

/**
 * 类用途:封装 HttpUils
 * 作者:史曌宇
 */

public class HttpUils {

    private static volatile HttpUils httputils;
    private static Context context;
    private  Gson gson;

    private HttpUils(Context context) {
        //单例模式,封装构造方法
        gson = new Gson();
    }


    public static HttpUils getHttpUtils(Context activity) {
        //单例模式
        if (httputils == null) {
            synchronized (HttpUils.class) {
                if (httputils == null) {
                    httputils = new HttpUils(context);
                }

            }
        }
        return httputils;
    }




    //拼接接口请求
    public void get(String url, String gtc_id, final Class zz,final ResultData resultData) throws IOException {
        /**
         *  Get请求
         */

        StringBuffer sb = new StringBuffer();
        sb.append(url);

//        for (Map.Entry<String, String> entry : params.entrySet()) {
//            entry.getKey();
//            entry.getValue();
//            sb.append(entry.getKey());
//            sb.append("=");
//            sb.append(entry.getValue());
        sb.append("&");
        sb.append("gc_id=");
        sb.append(gtc_id);


        String s = sb.toString();

        OkHttpUtils.get().url(s).build().execute(new StringCallback() {
            @Override
            public void onError(Request request, Exception e) {
                //异常
                Log.d("HttpUtils", "onError");
            }

            @Override
            public void onResponse(String response) {
                //成功
                Log.d("HttpUtils", response);
                BaseBean basebean = (BaseBean) gson.fromJson(response, zz);

                int code = basebean.getCode();

                if (code == 200) {
                    if (resultData != null) {
                        try {
                            resultData.onSuccess(basebean);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                } else if (code == 400) {

                    new AlertDialog.Builder(context).setTitle("提示")
                            .setMessage("服务器错误请稍后再试").show();

                }


            }
        });
    }

    //直接请求不拼接接口
    public void get(String url, final Class zz, final ResultData resultData) {
        OkHttpClient okHttpClient=new OkHttpClient();
//        okHttpClient.setConnectTimeout(20,30);
        OkHttpUtils.get().url(url).build().execute(new StringCallback() {
            @Override
            public void onError(Request request, Exception e) {
                //异常
                Log.e("onError", e.getMessage());
            }

            @Override
            public void onResponse(String response) {
                //成功
                Log.e("HttpUtils", response);
                BaseBean basebean = (BaseBean) gson.fromJson(response, zz);

                int code = basebean.getCode();

                if (code == 200) {
                    if (resultData != null) {
                        try {
                            resultData.onSuccess(basebean);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                } else if (code == 400) {

                    new AlertDialog.Builder(context).setTitle("提示")
                            .setMessage("服务器错误请稍后再试").show();

                }


            }
        });
    }




















}

创建Bean类;

注意:总Bean类用BaseBean  其他所有的Bean类都要继承BaseBean   Bean类根据Json串去定义,举个列子,根据事例,自己创建吧!!

BaseBean

package shizhaoyu1506b20170825.okhttp;

/**
 * 类用途:
 * 作者:史曌宇
 */

public class BaseBean {

   private  int code;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }





}


子类Bean

太长了,就不放上来了!!!

public class ShopBean extends  BaseBean {}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值