Android----------OkHttp网络请求框架Get和Post简单封装(泛型)
2017-08-10 16:28
1181 查看
请求框架的类:
OkHttp依赖:
compile 'com.squareup.okhttp3:okhttp:3.8.1'
RecyclerView依赖:
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
public class OkHttpUtils { private Handler hand=new Handler(); private NetDataCallback netDataCallback; public <T>void getdata(String url, final NetDataCallback netDataCallback, final Class<T> tclass) { //初始化一个 OkHttpClient 并且设置连接和读取超时时间 OkHttpClient okhttp = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //构造一个Request对象 Request request = new Request.Builder().url(url).build(); //通过request的对象去构造得到一个Call对象 Call call = okhttp.newCall(request); //调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。 call.enqueue(new Callback() { //失败的情况 @Override public void onFailure(Call call, IOException e) { Log.e("///////", "onFailure"); netDataCallback.fail(499,e.getMessage()); } //成功的情况 @Override public void onResponse(Call call, Response response) throws IOException { Gson gson=new Gson(); T t = gson.fromJson(response.body().string(), tclass); final Message msg = Message.obtain(); msg.what=ok; msg.obj=t; hand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } //post请求 public <T>void getLoadDataPost(String url, final NetDataCallback netDataCallback, final Class<T> tClass, RequestBody body){ this.netDataCallback=netDataCallback; OkHttpClient okHttpClient = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .connectTimeout(10, TimeUnit.SECONDS) .build(); final Request request = new Request.Builder().url(url).post(body).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netDataCallback.fail(499,e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { T t = new Gson().fromJson(response.body().string(), tClass); final Message msg = Message.obtain(); msg.what = OK; msg.obj = t; hand.post(new Runnable() { @Override public void run() { netDataCallback.success(msg.obj); } }); } }); } }
定义一个接口:
public interface NetDataCallback<T> { void success(T t); void fail(int code,String str); }
相关文章推荐
- Android 网络访问框架retrofit2,okhttp3之简单封装,kotlin源码
- Android 网络请求框架,包涵get,post请求,from表单上传图片,基于okhtt封装的图片上传
- Android网络框架之----OKHttp简单二次封装
- 根据volley网络请求框架封装好的get请求和post请求
- 给Android封装的一个简单网络请求框架
- Android中使用HttpURLConnection和HttpClient实现GET和POST请求访问网络
- Android中的http带参数网络请求,GET和POST
- Android 网络请求方式之HttpClient,GET,POST,PUT请求使用方法
- 使用android-async-http来封装Android网络请求框架
- "Android下使用HttpUrlConntion"进行最简单的get,post请求(包括创建服务器)
- android http——网络请求二次封装的框架设计
- Android Http请求框架一:Get 和 Post 请求
- Android从零开搞系列:网络框架系列(2)OkHttp+POST图片(下)
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比 标签: androidVolleyOkhttpRetrofit网络请求框架
- 12_Android中HttpClient的应用,doGet,doPost,doHttpClientGet,doHttpClient请求,另外借助第三方框架实现网络连接的应用,
- ASIHTTPRequest 对GET POST 请求简单封装
- ASIHTTPRequest 对GET和POST请求简单封装
- Android更好的扩展性更强网络请求框架----okhttp
- 简单封装Http的Get和Post请求
- Android Http请求框架一:Get 和 Post 请求