[倾力之作]android轻量级网络请求框架MyHttputils
尊重原创,转载请注明出处: http://blog.csdn.net/qq137722697
一、前言
本版代码全部重构,使用了策略模式和构造模式来组织代码,增加了更加人性化的请求构造,代码质量提高、效率显著提升。(但是使用风格基本没变哦)
2.0.2版本的基本的用法在《android网络请求框架》一个轻量级的异步网络请求框架MyHttpUtils(新版更新记录,版本号:2.X)中有过详细的介绍。下面是对2.1.5版的详细使用介绍,对源码感兴趣的伙伴可以移步github了解更多的消息。
二、功能介绍
1、支持get、post请求;
2、支持http和https的协议;
3、支持设置连接、读取超时时间(可选);
4、支持json格式的请求结果(无论json格式多复杂,都能搞定);
5、支持传入JavaBean对象(解析之后的javabean对象);
6、支持回调方法中反应传入javabean对象,这样可以在回调方法中直接拿到解析过后的javabean对象;
7、支持回调方法中更新UI(所以叫异步请求了);
8、支持文件下载;—->带下载进度回调方法
9、支持单文件上传;
10、支持多文件上传;
11、支持请求完成后回调—>onComplete方法;
12、支持直接获取字符串;
13、支持参数与文件同时上传;
14、提供错误信息处理类;
MyHttpUtils满足了大部分的网络请求了,而且非常轻量级哦(大小:20.76k)
三、快速使用
使用gradle添加依赖(添加完之后Sync一下):
compile 'com.huangdali:myhttputils:2.1.5'
当然了网络权限可别忘加哦
<uses-permission android:name="android.permission.INTERNET" />
文件上传和下载也需要添加权限(不要这个功能的就不用加)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
四、入门案例
4.1、简单的一个网络请求(直接获取请求的结果—>字符串)
MyHttpUtils.build()//构建myhttputils
.url("http://192.168.2.153:8080/MyHttpUtilsServer/string.action")//请求的url
.onExecute(new StringCallBack() {
//开始执行,并有一个回调(异步的哦---->直接可以更新ui)
@Override
public void onSucceed(String result) {
//请求成功之后会调用这个方法
//成功之后的拿到结果result进行处理
}
@Override
public void onFailed(Throwable throwable) {
//请求失败的时候会调用这个方法
//失败之后的拿到错误结果throwable进行处理
}
});
通过上面的代码就能发起get请求;
下面结合一个案例类演示:用户输入字母,点击转换即可得到对应的大写字母。(小写转大写案例)
接口:http://192.168.2.153:8080/MyHttpUtilsServer/string.action
参数: content
请求方式: get
先看效果:
来看怎么实现:
/**
* 单击转换按钮的事件
*
* @param view
*/
public void onUpperCase(View view) {
String content = etContent.getText().toString();//拿到用户输入的内容
MyHttpUtils.build()//构建myhttputils
.url("http://192.168.2.153:8080/MyHttpUtilsServer/string.action")//请求的url
.addParam("content",content)
.onExecute(new StringCallBack() {
//开始执行,并有一个回调(异步的哦---->直接可以更新ui)
@Override
public void onSucceed(String result) {
//请求成功之后会调用这个方法----显示结果
tvResult.append("\n");
tvResult.append(Html.fromHtml("<font size='30px' color='red'>" + result + "</font>"));
tvResult.append("\n");
}
@Override
public void onFailed(Throwable throwable) {
//请求失败的时候会调用这个方法
ToastUtils.showToast(UpperCaseActivity.this, FailedMsgUti