Android-async-http网络框架:https://github.com/loopj/android-async-http
* 是一款高效的数据请求,文件上传下载网络请求开源框架。
* 优点:
* 网络请求回调清晰,易操作
* 请求使用线程池TreadPool,限制并发请求资源使用
* GET,POST等常用 请求基于参数构建使用,传递参数方便
* Multipart文件上传下载等。
使用比较简单,但其功能非常强大,还需要在使用中不断挖掘,简单使用举例:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//使用get请求
http_get();
//使用post请求
http_post();
}
private void http_get() {
// 网络请求的连接地址,xxxxxxxx指你在聚合api中申请的key值
String url = "http://apis.juhe.cn/mobile/get?phone=13429667914&key=xxxxxxxx";
AsyncHttpClient client = new AsyncHttpClient();
client.get(url, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] result) {//网络请求成功处理
Log.e("ldm",new String(result));
}
});
}
private void http_post() {
//用Post要把get请求后面的字段用参数的方式过去
String url = "http://apis.juhe.cn/mobile/get?";
AsyncHttpClient client = new AsyncHttpClient(); // 创建异步请求的客户端对象
String url = "http://172.16.237.200:8080/video/login.do"; // 定义请求的地址
// 创建请求参数的封装的对象
RequestParams params = new RequestParams();
param.put("phone", "13429667914");//参数phone
param.put("key", "xxxxxxxx"); //参数key:在聚合API网站申请的key值
// 执行post方法
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] result) {
if (statusCode == 200) {//请求成功处理
Log.e("ldm",new String(result));
}
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) { //请求失败处理
Log.e("ldm",error.printStackTrace().toString());// 把错误信息打印出轨迹来
}
});
}
}
我们可以对AsyncHttpResponseHandler进行简单封装,当然我们可以根据自己项目的需要对框架进行封装,方便项目开发。
public abstract class NetHttpHandler extends AsyncHttpResponseHandler {
@Override
public void onStart() {
Log.e("ldm", "网络请求开始,我们可以使用加载框提示");
super.onStart();
}
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
Log.e("ldm", "请求失败,进行失败处理");
requestFail(agr3);
super.onFailure(arg0, arg1, arg2, arg3);
}
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
Log.e("ldm", "请求成功,进行成功后数据处理");
requestSuccess(new String(arg2));
super.onSuccess(arg0, arg1, arg2);
}
public abstract void requestSuccess(String result);// 请求成功回调
public abstract void requestFail(Throwable error);// 请求失败回调
}
我们把上面的AsyncHttpResponseHandler 换成我们的NetHttpHandler,在requestSuccess()和requestFail()方法中进行逻辑处理就可以了。