封装安卓的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进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的 ...
随机推荐
- jmeter 插件安装
1.下载Plugins Manager插件 打开下载插件地址:https://jmeter-plugins.org/ 2.将下载的plugins-manager.jar包复制到Jmeter安装目录,l ...
- Vue 去脚手架插件,自动加载vue文件
接上回 一些本质 本质上,去脚手架也好,读取vue文件也好,无非是维护options,每个Vue对象的初始化配置对象不触及Vue内部而言,在外部想怎么改都是可以的,只要保证options的正确,一切都 ...
- 1394-Minimum Inversion Number
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- log报错: Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
报错: 解决方式: 1.登录数据库查看错误原因 结果发现账号无法正常登录出现账号被锁定的错误. 2.如何账号解锁? 用sys系统管理员账号登录数据库 SQL> alter user 用户名 ac ...
- Qt irrlicht(鬼火)3D引擎 摄像机旋转问题
点击打开链接Irrlicht中的摄像有一个函数 setUpVector() if (m_device != 0 ) { core::vector3df rotation(y,x,0.f); m_cam ...
- 虚拟现实-VR-UE4-获取UE4
UE4现在虽然是开源,但是并不是免费的,在你的游戏成功后,回收取5%费用和每个月19美元的费用 所以,第一步,进去UE4官网:https://www.unrealengine.com/zh-CN/wh ...
- jmeter接口测试--参数化
接口测试时遇到一些属性不能重复时,可以使用Random 随机函数,除此之外,也可以用用户参数 一..随机参数化 1.在jmeter工具,菜单-选项-函数助手对话框,输入数值,属性,点击生成: 2.在相 ...
- MyCAT+MySQL 搭建高可用企业级数据库集群——第2章 MyCat入门
2-1 章节综述 2-2 什么是MyCat 2-3 什么是数据库中间层 2-4 MyCat的主要作用 2-5 MyCat基本元素 2-6 MyCat的安装 2-1 章节综述 1.掌握Mycat的基础概 ...
- 排查实时tail功能cpu占用过高问题
“你的python应用cpu占用快90%了!!!”,良哥朝我眨了眨布满血丝的眼睛“不会吧”,我心想:我这是好的啊 没接触过kafka的同学可以先了解下:([http://www.jasongj.com ...
- 1107 Social Clusters (30 分)(并查集)
并查集的基本应用 #include<bits/stdc++.h> using namespace std; ; vector<int>vec[N]; int p[N]; con ...