封装安卓的okhttp
1.封装了get方法,handler更新主线程,回调的onsuccess,onfailure,onerror等方法
2.配置文件
api 'com.android.support:recyclerview-v7:26.1.0'
api 'com.squareup.okhttp3:okhttp:3.9.1'
//fastjson
api 'com.alibaba:fastjson:1.2.44'
3.先建立一个http包,建BaseHttpCallback和OkHttpHelper这2个类,以后会加loading...这个东西
public class OkHttpHelper {
private static OkHttpClient okHttpClient;
private android.os.Handler handler;
private OkHttpHelper(){
okHttpClient =new OkHttpClient();
handler =new android.os.Handler(Looper.getMainLooper());
};
public static OkHttpHelper getInstance(){
return new OkHttpHelper();
}
public void get(String url,BaseHttpCallback baseHttpCallback){
Request request = buildRequest(url,null,HttpMethodType.GET);
doRequest(request, baseHttpCallback);
}
public void post(String url, Map<String,String>params,BaseHttpCallback baseHttpCallback){
Request request = buildRequest(url,null,HttpMethodType.POST);
doRequest(request, baseHttpCallback);
}
public void doRequest(final Request request, final BaseHttpCallback baseHttpCallback){
baseHttpCallback.onRequestBefore(request);
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
callbackFailure(baseHttpCallback,e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.isSuccessful()){
String s= response.body().string();
callbackSuccess(baseHttpCallback,response,s);
}else{
callbackError(baseHttpCallback,response,response.code());
}
}
});
}
private Request buildRequest(String url,Map<String,String> params,HttpMethodType methodType){
Request.Builder builder = new Request.Builder();
builder.url(url);
if(methodType==HttpMethodType.GET){
builder.get();
}else if(methodType==HttpMethodType.POST){
}
return builder.build();
}
enum HttpMethodType{
GET,
POST
}
private void callbackSuccess(final BaseHttpCallback callback, final Response response, final String s){
handler.post(new Runnable() {
@Override
public void run() {
callback.onSuccess(response,s);
}
});
}
private void callbackError(final BaseHttpCallback callback, final Response response, final int code){
handler.post(new Runnable() {
@Override
public void run() {
callback.onError(response,code,null);
}
});
}
private void callbackFailure(final BaseHttpCallback callback, final Exception e){
handler.post(new Runnable() {
@Override
public void run() {
callback.onFailure(e);
}
});
}
}
public abstract class BaseHttpCallback {
public abstract void onRequestBefore(Request request);
public abstract void onSuccess(Response response,String string);
public abstract void onError(Response response,int code,Exception e);
public abstract void onFailure(Exception e);
}
4. 还另外封装了个User类
public class User {
public String result;
public List<Data> data;
public class Data{
public String name;
public String age;
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
public String getResult() {
return result;
}
public List<Data> getDatas() {
return data;
}
}
5.activity中调用例子
OkHttpHelper httpHelper =OkHttpHelper.getInstance();
String url = "http://www.baidu.com";
httpHelper.get(url,new BaseHttpCallback(){ @Override
public void onRequestBefore(Request request) { } @Override
public void onSuccess(Response response, String string) { } @Override
public void onError(Response response, int code, Exception e) { } @Override
public void onFailure(Exception e) {
Toast.makeText(MainActivity.this,"当前网络不可用,请检查网络",Toast.LENGTH_LONG).show();
}
});
6.未完善的,没有post,没有loading效果,
封装安卓的okhttp的更多相关文章
- 安卓通过OkHttp获取json数据
使用Http协议访问网络 OkHttp使用 可以很好的获取接口数据!json数据! 支持get和post提交方式!!! 1.引入模块 compile 'com.squareup.okhttp3:okh ...
- okhttp +fastJson 在UI层的回调封装
一直使用OkHttp 经常烦人的地方是回调方法 数据解析后必须通过handler 在主线程做操作 网上找了很多资料 发现有些都是基于Gson做的解析 fastJson 在封装时 泛型传入会有很多不方 ...
- 如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)
前言 对于程序员来说,很多时候,我们都在造房子,从学会框架或者是学会构建整个项目之后,慢慢的我们就会觉得自己在做的事情是一种重复劳动,很多时候只不过是换个面孔而已.而更快的造房子,造好看的房子可能是进 ...
- 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
网络请求框架总结1.xutils 此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...
- OKHttp使用详解
一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak ...
- 框架--NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用?
NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用? NoHttp 源码及Demo托管在Github欢迎大家Star: https://github.com/Y0LANDA/NoH ...
- 【Android - 框架】之OkHttp的使用
OkHttp是一个非常优秀的网络访问框架,当下非常火的Retrofit的底层就是使用OkHttp进行封装的.接下来介绍以下OkHttp的简单使用. 1.导入依赖 在Android Studio中,在M ...
- Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切
效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...
- Xutils, OKhttp, Volley, Retrofit对比
Xutils这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的 ...
随机推荐
- C语言实现简易扫雷
首先,写代码之前要将整体思路写出来: 扫雷游戏:1.需要两个二维数组,一个用来展示,一个用来放雷; 2.整体骨架在代码中都有注释说明; 3.游戏难度比较简单,适合初学者观看,如果有大佬看明白,可以指点 ...
- js分类多选全选
效果如图: HTML代码: <div class="form-group quanxian-wrap"> <label>项目</label> & ...
- C 二维指针难点详解。
关于 指向二维数组的指针. int a[2][3]; int *p; int (*p_1)[3]; 可以用p_1 = a ,但是不能用p = a : 因为此时数组a的数据类型是 int (* ...
- Git的升级版本
关于升级版本,例如我们要升级service版本,我们可以这样子操作 1.在master里面pull完了之后,到自己的分支,然后merge master里面的代码,然后把pom文件 里面的版本升一级,然 ...
- Hadoop学习(一) Hadoop是什么
Hadoop是什么? Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用Java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算. Hadoop框架 ...
- Qt Demo Http 解析网址 Openssl
今天练习了一下Qt 解析http协议,在Demo中使用到了Openssl 一上午的时间都是编译openssl,不过还是没有成功,很遗憾,这里整理了有关这个Demo的本件 网盘连接:见下方评论吧,长传太 ...
- 《python核心编程第二版》第1章练习
1–1. 安装 Python.请检查 Python 是否已经安装到你的系统上,如果没有,请下载并 安装它 略 1–2. 执行 Python.有多少种运行 Python 的不同方法?你喜欢哪一种?为什 ...
- 5、shader混合(Blending)、雾
直接上效果图:queue:transparent 雾: fog { mode exp color(0.6,0.4,0.3,0.8) density 0.3 range ,0.8 } 效果: http: ...
- 3.爬虫 urlib库讲解 总结
urllib库的总结: 用ProcessOn(安利这个软件,够用了)根据前面的几节内容做了个思维导图. urllib库一共有四个模块: request:它是最基本的模块,可以用来模拟发送请求 erro ...
- RMQ问题+ST算法
一.相关定义 RMQ问题 求给定区间的最值: 一般题目给定许多询问区间. 常见问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大 ...