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的更多相关文章

  1. 安卓通过OkHttp获取json数据

    使用Http协议访问网络 OkHttp使用 可以很好的获取接口数据!json数据! 支持get和post提交方式!!! 1.引入模块 compile 'com.squareup.okhttp3:okh ...

  2. okhttp +fastJson 在UI层的回调封装

    一直使用OkHttp 经常烦人的地方是回调方法  数据解析后必须通过handler 在主线程做操作 网上找了很多资料 发现有些都是基于Gson做的解析 fastJson 在封装时 泛型传入会有很多不方 ...

  3. 如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)

    前言 对于程序员来说,很多时候,我们都在造房子,从学会框架或者是学会构建整个项目之后,慢慢的我们就会觉得自己在做的事情是一种重复劳动,很多时候只不过是换个面孔而已.而更快的造房子,造好看的房子可能是进 ...

  4. 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比

    网络请求框架总结1.xutils     此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...

  5. OKHttp使用详解

    一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络. 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak ...

  6. 框架--NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用?

    NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用? NoHttp 源码及Demo托管在Github欢迎大家Star: https://github.com/Y0LANDA/NoH ...

  7. 【Android - 框架】之OkHttp的使用

    OkHttp是一个非常优秀的网络访问框架,当下非常火的Retrofit的底层就是使用OkHttp进行封装的.接下来介绍以下OkHttp的简单使用. 1.导入依赖 在Android Studio中,在M ...

  8. Android中使用OKHttp上传图片,从相机和相册中获取图片并剪切

    效果:注意:1:网络权限<;;;); intent.putExtra(); ); intent.putExtra(); intent.putExtra(, byteArrayOutputStre ...

  9. Xutils, OKhttp, Volley, Retrofit对比

    Xutils这个框架非常全面,可以进行网络请求,可以进行图片加载处理,可以数据储存,还可以对view进行注解,使用这个框架非常方便,但是缺点也是非常明显的,使用这个项目,会导致项目对这个框架依赖非常的 ...

随机推荐

  1. 原lnmp环境服务器升级为mysql+nginx+php单个docker容器构建的lnmp环境

    时间:2018年2月 一.项目背景 我单位现web服务架构为lnmp环境,服务器软件.硬件升级部署难:同时开源软件日新月异,考虑到技术升级,领导决定服务器架构整体升级为容器架构,维护性.移植性强. 二 ...

  2. Leecode刷题之旅-C语言/python-14.最长公共前缀

    /* * @lc app=leetcode.cn id=14 lang=c * * [14] 最长公共前缀 * * https://leetcode-cn.com/problems/longest-c ...

  3. 嵌入式框架Zorb Framework搭建六:定时器的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  4. HBase 增删改查Java API

    1. 创建NameSpaceAndTable package com.HbaseTest.hdfs; import java.io.IOException; import org.apache.had ...

  5. HBase 是什么

    Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. HBase 是 Hadoop databa ...

  6. 教你如何更改xshell中的转发规则

    使用不同的类型转发,与之对应的端口,所以如果想要使用不同类型的转发就要更改端口使其与之一一对应.本集xshell专栏文章将为大家讲解如何更改转发规则. 更改转发规则操作如下: 1.打开会话对话框. 2 ...

  7. AV Foundation 实现文字转语音

    AV Foundation 主要框架 CoreAudio 音频处理框架 扩展学习:<Learning CoreAudio> CoreVideo 视频处理的管道模式,逐帧访问 CoreMed ...

  8. 【app.json】配置说明,不断更新中

    app.json文件用来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. 注意: 1) json配置中键名.键值必须使用双引号,不能使用单引号. 2) 以 ...

  9. javaX邮件发送

    /** * *  * @param mailServerHost 邮件服务器 * @param mailServerPort 端口 * @param validate 是否需要身份验证 * @para ...

  10. (转) Unreal Engine 4 Custom Shaders Tutorial

    说明: 1.这里的Custom Shaders 为且仅为 Custom Node的使用和USF的包含.并非全局Shader和Material Shader. 2.原文来源:https://www.ra ...