Android 网络请求框架android-async-http简单使用
16lz
2021-01-23
官网介绍: http://loopj.com/android-async-http/
git仓库:https://github.com/loopj/android-async-http
android-async-http最简单使用:
1.获取一个AsyncHttpClient对象
AsyncHttpClient client = new AsyncHttpClient();
2.调用AsyncHttpClient的get或者post方法,实现回调方法AsyncHttpResponseHandler
AsyncHttpClient类通常用在android应用程序中创建异步GET, POST, PUT和DELETE HTTP请求,请求参数通过RequestParams实例创建,响应通过重写匿名内部类ResponseHandlerInterface方法处理。
带参数的使用方法:
get:
通过RequestParams类添加参数
RequestParams params = new RequestParams();params.put("", "");client.get("http://www.baidu.com", params,new AsyncHttpResponseHandler() {@Override@Deprecatedpublic void onFailure(Throwable error) {super.onFailure(error);Log.e(TAG, "onFailure");}@Overridepublic void onFinish() {super.onFinish();Log.e(TAG, "onFinish");}@Overridepublic void onStart() {super.onStart();Log.e(TAG, "onStart");}@Overridepublic void onSuccess(int arg0, Header[] arg1, byte[] arg2) {super.onSuccess(arg0, arg1, arg2);Log.e(TAG, "onSuccess");String string = new String(arg2);tv_context.setText(string);}});
post请求方式和get差不多,只是换一个方式而已。
下面是上传图片到服务器
RequestParams params = new RequestParams();
params.put("file_path", new File(file_path));
RequestParams params = new RequestParams();params.put("file_path", new File(file_path));client.post(url, params, new AsyncHttpResponseHandler() {@Overridepublic void onSuccess(int statusCode, Header[] headers,byte[] responseBody) {}@Overridepublic void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error) {}@Overridepublic void onProgress(int bytesWritten, int totalSize) {super.onProgress(bytesWritten, totalSize);}});
onProgress方法中可以添加进度显示操作
那么每次请求是不是都要获取一遍AsyncHttpClient对象了,看看官方提供的例子:
public class TwitterRestClient { private static final String BASE_URL = "http://api.twitter.com/1/"; private static AsyncHttpClient client = new AsyncHttpClient(); public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { client.get(getAbsoluteUrl(url), params, responseHandler); } public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { client.post(getAbsoluteUrl(url), params, responseHandler); } private static String getAbsoluteUrl(String relativeUrl) { return BASE_URL + relativeUrl; }}
推荐使用一个静态的AsyncHttpClient对象,我们可以封装一个请求静态类,包括get/ post无参请求,get/ post带参请求,上传,下载方法。。每次只需调用对应的方法就行了。
更多详细的的使用方法可以参考官方的文档:http://loopj.com/android-async-http/
因为是异步网络请求框架,当然不要忘记了网络权限:
更多相关文章
- Android应用程序四种数据存取方法总结
- traceview的使用方法
- android Bimtap 各种图片处理方法、图片特效
- android 9.0获取mac地址的方法
- Android实现音量调节的方法
- Android Bitmap对象与byte[]相互转换
- android常用intent的方法
- Android 整屏截图与区域指定view或layout截屏并返回bitmap对象
- Android右滑返回上一个界面的实现方法