OkHttp get和post封装
来源:互联网 发布:php 判断上传文件大小 编辑:程序博客网 时间:2024/05/08 17:25
最近需要大量的解析我就把最近最好的OkHttp还有Gson写到了一起,话不多说直接代码了
public class OkHttpUtils { //第一个Post请求 异步方法 // 1:首先定义一个接口 public interface GetEntityCallBack{ // 2:定义一个或多个抽象方法 void getEntity(Object obj); } // 声明一个全局变量 public static GetEntityCallBack callBack; //3:再本类中定义一个接口实例(只是定义,而不是创建):目的是接受调用者传过来的接口 public static void setGetEntityCallBack(GetEntityCallBack callBack1){ // GetEntityCallBack变成全局变量 callBack=callBack1; } // Type类型封装的 也可以把type改成Class 下面的参数也是class public static void post(final Context context , Map<String,String > map, String path, final Class cla){ OkHttpClient client = new OkHttpClient(); FormBody.Builder builder = new FormBody.Builder(); // Set<Map.Entry<String, String>> entries = map.entrySet(); for (Map.Entry<String ,String> e:entries){ // builder.add(e.getKey(),e.getValue()); } FormBody body = builder.build(); final Request request = new Request.Builder() .url(path) .post(body) .build(); Call call = client.newCall(request); // 接口回调 这个属于异步方法 call.enqueue(new Callback() { // 失败的时候 @Override public void onFailure(Call call, IOException e) { // Toast.makeText(context, "下载失败,检查网络", Toast.LENGTH_SHORT).show(); System.out.println("下载失败,检查网络"); } // 成功的时候 @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()){ // 将响应踢转化成字符串类型 String json = response.body().string(); Gson gson = new Gson(); // 把解析出来的数据 放到接口中 Object o = gson.fromJson(json,cla); // 接口回调:把这个接口方法放到你想要放到地方 callBack.getEntity(o); Log.e(TAG, "onResponse: 回调" ); } } }); } // 第二个Post请求 同步方法 private static Object o1; public static Object postTwo(final String path , Context context , final Class cla ){ new Thread(new Runnable() { @Override public void run() { OkHttpClient client = new OkHttpClient(); FormBody.Builder builder = new FormBody.Builder(); FormBody body = builder.build(); Request request = new Request.Builder() .url(path) .post(body) .build(); Call call = client.newCall(request); try { Response response = call.execute(); int code = response.code(); if (code == 200 ){ // 将响应踢转化成字符串类型 String json = response.body().string(); Gson gson = new Gson(); o1 = gson.fromJson(json,cla); } } catch (IOException e) { e.printStackTrace(); } } //启动线程 }).start(); return o1; } // Get请求 同步方法 public static Object get(String path , Context context){ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(path) .build(); Call call = client.newCall(request); try { Response response = call.execute(); int code = response.code(); if (code == 200){ // 得到响应体 ResponseBody body = response.body(); byte[] bytes = body.bytes(); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes,0,bytes.length); Handler handler = new Handler(); handler.post(new Runnable() { @Override public void run() { // 控件.setImageBitmap(bitmap); } }); }else{ Toast.makeText(context, "请求网络失败,请连接网络", Toast.LENGTH_SHORT).show(); } } catch (IOException e) { e.printStackTrace(); } return null; } // Get请求 异步方法 public static void getTwo(final String path, final Context context, final Class cla){ OkHttpClient client = new OkHttpClient(); final Request request = new Request.Builder() .url(path) .get() .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Toast.makeText(context , "请求网络失败,请检查网络", Toast.LENGTH_SHORT).show(); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()){ String json = response.body().string(); Gson gson = new Gson(); Object o = gson.fromJson(json, cla); callBack.getEntity(o); } } }); }}
我相信注释已经很明白了,希望对你有所帮助
1 0
- OkHttp get和post封装
- 简单封装okhttp的get和post方法
- 封装OKHttp的get和post请求模版
- OKhttp的异步get和post烦人封装
- OkHttp get post请求的封装
- OkHttp的Get和Post
- OKHttp的get和post请求封装方法(编写步骤.txt)
- Android----------OkHttp网络请求框架Get和Post简单封装(泛型)
- Android 单例模式 封装 Okhttp + RxJava 网络请求(get和post)
- OkHttp GET 和 POST 的使用
- OkHttp(1):GET和POST
- OkHttp GET 和 POST 的使用
- OkHttp GET 和 POST 的使用
- OkHttp GET 和 POST 的使用
- okHttp工具类,实现get和post
- Okhttp和Retrofit的get,post请求
- OkHttp get请求 和post请求
- OKhttp的get请求和post请求
- java内置数据类型
- 序列化总结
- Discuz 后台添加菜单
- ubuntu14.04+caffe 图像数据转换成db(leveldb/lmdb)
- Pascal程序设计(二级)——基础篇02介绍环境
- OkHttp get和post封装
- IIS上通过python的CGI模块 执行python脚本
- eclipse如何修改dynamic web module version
- 安卓基础之handler使用-->更新UI
- play框架使用起来(7)
- super
- spring MVC中基于hibernate validator的form表单验证
- Xcode LLDB 使用基础
- java的基础知识回顾---1