代码都封装好了,上层Activity如何调用呢?
如果是android studio开发支持在线依赖(我已经把项目添加到jcenter上):
compile 'com.ansen.http:okhttpencapsulation:1.0.1'如果是eclipse那你先把ide切换到android studio吧。。。不闲麻烦的话也可以把源码module的源码copy出来,反正也就几个类。
初始化的工作可以放Application,新建MyApplication类继承Application。初始化的时候通过HttpConfig设置一些参数,也可以添加公共参数。
public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); HttpConfig httpConfig=new HttpConfig(); httpConfig.setAgent(true);//有代理的情况能不能访问 httpConfig.setDebug(true);//是否debug模式 如果是debug模式打印log httpConfig.setTagName("ansen");//打印log的tagname //可以添加一些公共字段 每个接口都会带上 httpConfig.addCommonField("pf","android"); httpConfig.addCommonField("version_code","1"); //初始化HTTPCaller类 HTTPCaller.getInstance().setHttpConfig(httpConfig); } }因为自定义Application,需要给AndroidManifest.xml文件application标签中的android:name属性赋值,指定自己重写的MyApplication。
发送get请求就一行代码。
HTTPCaller.getInstance().get(User.class, "http://139.196.35.30:8080/OkHttpTest/getUserInfo.do?per=123", null, requestDataCallback);http请求回调接口,无论成功或者失败都会回调。因为是测试所以都用在这个接口来回调,在真实的企业开发中,不同的请求用不同的回调。
private RequestDataCallback requestDataCallback = new RequestDataCallback<User>() { @Override public void dataCallback(User user) { if(user==null){ Log.i("ansen", "请求失败"); }else{ Log.i("ansen", "获取用户信息:" + user.toString()); } } };post请求参数不是跟在url后面的,所以需要把请求参数放到集合里面。因为登录接口也是返回的用户信息,所以可以跟get请求用同一回调。
List<NameValuePair> postParam = new ArrayList<>(); postParam.add(new NameValuePair("username","ansen")); postParam.add(new NameValuePair("password","123")); HTTPCaller.getInstance().post(User.class, "http://139.196.35.30:8080/OkHttpTest/login.do", null, postParam, requestDataCallback);上传文件跟其他表单参数不一样的地方就是new NameValuePair对象的时候需要传入三个参数,最后一个参数需要设置成true。
private void updaloadFile(ProgressUIListener progressUIListener){ List<NameValuePair> postParam = new ArrayList<>(); postParam.add(new NameValuePair("username", "ansen")); postParam.add(new NameValuePair("password", "123")); String filePath=copyFile();//复制一份文件到sdcard上,并且获取文件路径 postParam.add(new NameValuePair("upload_file",filePath,true)); if(progressUIListener==null){//上传文件没有回调进度条 HTTPCaller.getInstance().postFile(User.class, "http://139.196.35.30:8080/OkHttpTest/uploadFile.do", null, postParam, requestDataCallback); }else{//上传文件并且回调上传进度 HTTPCaller.getInstance().postFile(User.class, "http://139.196.35.30:8080/OkHttpTest/uploadFile.do", null, postParam, requestDataCallback,progressUIListener); } }如果你想第一时间看我的后期文章,扫码关注公众号,每周不定期推送Android开发实战教程文章…
Android开发666 - 安卓开发技术分享 扫描二维码加关注