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; }}
阅读全文
0 0
- OkHttp的简单使用
- OKHttp的简单使用
- OKHttp的简单使用
- OkHttp的简单使用
- okhttp的简单使用
- OkHttp的简单使用
- OkHttp的简单使用
- OkHttp的简单使用
- OkHttp的简单使用
- OkHttp 的简单使用
- okhttp的简单使用
- Okhttp的简单使用
- OKhttp的简单使用
- 简单的OkHttp使用介绍
- OkHttp框架的简单使用
- OkhttP的简单使用笔记
- Android okHttp的简单使用
- okhttp的简单使用例子
- Guice Names的模板来生成注解
- KVO
- android:给图片打水印
- extern "C" 解析
- java String中的compareTo
- OkHttp的简单使用
- SPOOLing系统
- Kotlin的第一行代码
- POI读取excel某个单元格内容
- FFmpeg再学习 -- 将 jpeg 转成 mp4
- iframe(1) --- 判断页面是否被嵌套在iframe里
- 快速排序之C++实现
- linux下开启mysql慢查询日志
- 访问者模式==封装??