OkHttp的简单使用

来源:互联网 发布:公众号运营知乎 编辑:程序博客网 时间:2024/05/29 21:34

1.下载OKhttpUtils_master作为项目的库,地址:https://github.com/hongyangAndroid/okhttputils

2.在OkhttpUtils的OkHttpUtils这个类里可以加些项目需要的的请求头,例:

 public static PostFormBuilder post(String token, String userid, String version) {        PostFormBuilder postFormBuilder = new PostFormBuilder();        postFormBuilder.addHeader("X-Auth-Token", token);        postFormBuilder.addHeader("X-Auth-UserId", userid);        postFormBuilder.addHeader("X-Auth-Version", version);        return postFormBuilder;    }
  public static PostFileBuilder postFile(String token, String userid, String version) {        PostFileBuilder postFormBuilder = new PostFileBuilder();        postFormBuilder.addHeader("X-Auth-Token", token);        postFormBuilder.addHeader("X-Auth-UserId", userid);        postFormBuilder.addHeader("X-Auth-Version", version);        return postFormBuilder;    }
3.在MyApplication类

  @Override    public void onCreate() {        super.onCreate();OkHttpClient okHttpClient = new OkHttpClient.Builder()                .connectTimeout(10000L, TimeUnit.MILLISECONDS)                .readTimeout(10000L, TimeUnit.MILLISECONDS)                .addInterceptor(new LoggerInterceptor("TAG"))                .hostnameVerifier(new HostnameVerifier() {                    @Override                    public boolean verify(String hostname, SSLSession session) {                        return true;                    }                })                .build();        OkHttpUtils.initClient(okHttpClient);}
4.HttpPush的封装类
public class HttpPush {    private HttpPush() {    }    public static PostFormBuilder post(Activity activity){        String token= TokenSavemanager.token(activity);        String userid=TokenSavemanager.userId(activity);        String version= Util.getVersionName(activity);        return OkHttpUtils.post(token,userid,version);    }    public static PostFileBuilder postFile(Activity activity){        String token= TokenSavemanager.token(activity);        String userid=TokenSavemanager.userId(activity);        String version= Util.getVersionName(activity);        return OkHttpUtils.postFile(token,userid,version);    }    }
5.自定义的ResponseCallback(这是针对自身项目的自定义类,例:)

public abstract class ResponseCalback extends Callback<ResponseBean> {    Gson mGson;    @Override    public ResponseBean parseNetworkResponse(Response responses, int id) throws Exception {        String response = responses.body().string();        Log.e("返回值", response);        final ResponseBean responseBody = new ResponseBean();        try {            JSONObject jsonObject = new JSONObject(response);            int code = jsonObject.getInt("code");            String msg = jsonObject.getString("msg");            JSONObject data = jsonObject.getJSONObject("data");            responseBody.setCode(code);            responseBody.setMsg(msg);            final Map<String, Object> rstList = new HashMap<String, Object>();            JsonUtil.JsonToHashMap(data, rstList);            responseBody.setData_json(data.toString());            responseBody.setData(rstList);        } catch (JSONException e) {            e.printStackTrace();        }        return responseBody;    }    public ResponseBean getbean(String json) {        Type listType = new TypeToken<ResponseBean>() {        }.getType();        return gson().fromJson(json, listType);    }    private Gson gson() {        if (mGson == null) {            mGson = new Gson();        }        return mGson;    }    @Override    public void onError(Call call, Exception e, int id) {        Log.e("excepition", e.toString());        ProgressCircle.closeLoadingDialog();        Toast.makeText(MyApplication.getInstance().getApplicationContext(), "网络连接失败", Toast.LENGTH_SHORT).show();    }    @Override    public void onResponse(ResponseBean response, int id) {        ProgressCircle.closeLoadingDialog();        Log.e("response", response.getData().toString());        if (response.getCode() == 0) {            Util.show(MyApplication.getInstance().getApplicationContext(), "操作失败");        } else if (response.getCode() == 1) {            //ToastUtil.show(MyApplication.getInstance().getApplicationContext(), "操作成功");            returnData(response);        } else if (response.getCode() == 2) {            Util.show(MyApplication.getInstance().getApplicationContext(), "参数错误");        } else if (response.getCode() == 3) {            Util.show(MyApplication.getInstance().getApplicationContext(), "服务器错误");        } else if (response.getCode() == 4) {            Util.show(MyApplication.getInstance().getApplicationContext(), "token失效");                   } else if (response.getCode() == 5) {//跳到版本更新            Intent intent1 = new Intent();            intent1.setClass(MyApplication.getInstance().getApplicationContext(), UpDataActivity.class);            intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);            Map<String, Object> map = response.getData();            String url = map.get("url").toString();            intent1.putExtra("url", url);            MyApplication.getInstance().startActivity(intent1);            Util.show(MyApplication.getInstance().getApplicationContext(), "版本过低");        }    }    public abstract boolean returnData(ResponseBean responseBean);}
6.ResponseBean类:

public class ResponseBean {    int code=-11;    String msg="";    Map<String,Object>  data = new HashMap<>();    private String data_json="";    public <T> T getBean(Class<T> tClass){        if (TextUtils.isEmpty(data_json)){            data_json= com.alibaba.fastjson.JSONObject.toJSONString(data);            Log.e("data_json",data_json);        }        return com.alibaba.fastjson.JSONObject.parseObject(data_json,tClass);    }    public <T> List<T> getBeanList(Class<T> tClass){        if (TextUtils.isEmpty(data_json)){           data_json= com.alibaba.fastjson.JSONObject.toJSONString(data);        }        return com.alibaba.fastjson.JSONObject.parseArray(data_json,tClass);    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    public int getCode() {        return code;    }    public void setCode(int code) {        this.code = code;    }    public void setData( Map<String,Object> data) {        this.data = data;    }    public  Map<String,Object> getData() {        return data;    }    public void setData_json(String data_json) {        this.data_json = data_json;    }}







原创粉丝点击