Android网络请求框架:Android-async-http简单使用

来源:互联网 发布:宁波java培训班 编辑:程序博客网 时间:2024/05/21 10:49

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()方法中进行逻辑处理就可以了。

0 0
原创粉丝点击