最近使用的是 AsyncHttpClient这个请求框架,用不同品牌手机(Android 版本5.1.1)测试的时候出现了一个问题,魅族,酷派,发送请求返回数据没有延迟, 而Vivo,和Oppo 数据从服务端返回的时候 大概会有15-20秒的延迟,这样的体验很不好, 查了很多资料发现Google现在已经废弃HttpClient了, 而启用HttpURLConnection, 所以为了适配大部分的手机 决定换一个请求框架,刚开始做安卓的时候同事带着我一起做,用的是Xutil 所以在换框架的时候 第一时间想的就是它,进过一天的研究,已经和服务端进行了联机调试(版本 5.1)
现将使用方法大概介绍一下,
1:先把Xutil3 引入到 Studio build.gradle dependencies当中
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:support-v4:23.1.1' compile 'org.xutils:xutils:3.3.20' }
2:在Activity中onCreate的时候引入Xutil,这里的参数必须是Application 而不是Context
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); x.Ext.init(getApplication());
}
3:Post提交
(1)先New一个RequestParams类传入请求Url地址RequestParams params = new RequestParams(Url);
(2)这个方法接收两个参数一个是传入的KEY(String类型),一个是传入的Vaule(Object类型),
params.addParameter("","");
(3)如果想传中文又需要设置编码的话可以这样传,这个方法接收三个参数,前两个一样,后面一个是指定编码
params.addBodyParameter("","" ,"application/json;charset=gbk");
(4)都弄好一样记得把params设置编码最好是和你传中文的编码一样
params.setCharset("gbk");
(5)添加完数据和设定好编码以后就是请求,Xutil3的请求参数比较简单接收两个参数一个是RequestParams,一个是用于接收数据返回的CommonCallback<String>, CommonCallback返回的数据支持泛型,目前我只用 到过String,有兴趣的朋友可以试试其他的类型,以为CommonCallback是直接new的所有必须实现它的4个方法
onSuccess:这个方法用于接收返回的数据 onError和onCancelled 暂时还没用到过 onFinished是请求发生错误调用的方法你可以自定义错误信息给用户
x.http().post(params, new Callback.CommonCallback<String>() { @Override public void onSuccess(String o) { } @Override public void onError(Throwable throwable, boolean b) { } @Override public void onCancelled(CancelledException e) { } @Override public void onFinished() { } });
好了Post请求就写到这里,如果公司需要用到Get请求以及其他的像文件上传下载,图片的下载什么的再更新博客或者做一个封装把用的请求都封装起来。