浅论Android网络请求库——android-async-http(比较好的开源框架)
来源:互联网 发布:淘宝森马官方旗舰店 编辑:程序博客网 时间:2024/05/19 19:42
在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果。
AsyncHttpResponseHandler ——这是一个请求返回处理 成功 失败 开始 完成 等自定义的消息的类
BinaryHttpResponseHandler extends AsyncHttpResponseHandler ——继承AsyncHttpResponseHandler的子类,这是一个字节流返回处理的类, 该类用于处理图片等类。
JsonHttpResponseHandler extends AsyncHttpResponseHandler ——继承AsyncHttpResponseHandler的子类,这是一个json请求返回处理服务器与客户端用json交流时使用的类.
AsyncHttpRequest implements Runnable ——基于线程的子类,用于 异步请求类, 通过AsyncHttpResponseHandler回调。
PersistentCookieStore implements CookieStore ——这是一个基于CookieStore的子类, 使用HttpClient处理数据,并且使用cookie持久性存储接口。
RequestParams ——封装了参数处理 例如:
* RequestParams params = new RequestParams();* params.put("username", "james");* params.put("password", "123456");* params.put("email", "my@email.com");* params.put("profile_picture", new File("pic.jpg")); // Upload a File* params.put("profile_picture2", someInputStream); // Upload an InputStream* params.put("profile_picture3", new ByteArrayInputStream(someBytes)); // Upload some bytes** AsyncHttpClient client = new AsyncHttpClient();
接下来核心类。
RetryHandler implements HttpRequestRetryHandler——这是一个多个线程同步处理的类
SerializableCookie implements Serializable——这是操作cookie 放入/取出数据的类
SimpleMultipartEntity implements HttpEntity——用于处理多个请求实体封装
SyncHttpClient extends AsyncHttpClient——同步客户端请求的类
AsyncHttpClient——异步客户端请求的类
介绍了这些核心类之后,我们主要看看他的用法:
这是普通get方式来返回相应字符串的代码:
AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.baidu.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { System.out.println(response); textView.setText(response); } @Override public void onStart() { super.onStart(); System.out.println("onStart"); } @Override public void onFinish() { super.onFinish(); System.out.println("onFinish"); } }
同时,请求方式还支持POST和PUT,请求的同时还支持参数传递,下面看看如何通过JSON字符串作为参数访问服务器:
try { JSONObject jsonObject = new JSONObject(); jsonObject.put("username", "ryantang"); StringEntity stringEntity = new StringEntity(jsonObject.toString()); client.post(MainActivity.this, "http://api.com/login", stringEntity, "application/json", new JsonHttpResponseHandler(){ @Override public void onSuccess(JSONObject jsonObject) { super.onSuccess(jsonObject); } }); } catch (JSONException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
除此之外,还能够支持相应文件图片上传的话。相应的源代码如下:
String path="http://sv1.livechano.com:8080/upload.action?&action=1.6&type=1&ext=png"; File myFile = new File("/sdcard/test.png"); RequestParams params = new RequestParams(); try { params.put("image", myFile,"application/octet-stream"); AsyncHttpClient client = new AsyncHttpClient(); client.post(path, params, new AsyncHttpResponseHandler(){ @Override public void onFailure(Throwable error, String content) { // TODO Auto-generated method stub super.onFailure(error, content); Toast.makeText(MainActivity.this, "上传失败!"+content, Toast.LENGTH_LONG).show(); } @Override public void onSuccess(int statusCode, String content) { // TODO Auto-generated method stub super.onSuccess(statusCode, content); System.out .println("content: "+content); Toast.makeText(MainActivity.this, "上传成功!"+content, Toast.LENGTH_LONG).show(); } }); } catch(FileNotFoundException e) { }
注意了,这种方法上传的参数一定要 设置params.put("image", myFile,"application/octet-stream");否则就会失败。
当然,android-async-http还有很多用法,这里不做过多赘述了。希望android-async-http能够大家以后android的请求模块得到帮助。
- 浅论Android网络请求库——android-async-http(比较好的开源框架)
- Android网络通信请求框架—Android-async-http
- 浅论Android网络请求库——android-async-http
- 浅论Android网络请求库——android-async-http
- 浅论Android网络请求库——android-async-http
- 浅论Android网络请求库——android-async-http
- 浅论Android网络请求库——android-async-http
- Android网络请求框架android-async-http
- Android基于http的网络请求async-http框架
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http使用
- Android网络请求库——android-async-http
- 论Android网络请求库——android-async-http
- android请求网络——第三方库android-async-http的使用(1)
- android请求网络——第三方库android-async-http的使用(2)
- viewPager+fragment fragmentPagerAdapter
- Leetcode: Minimum Window Substring
- 非阻塞同步机制与CAS操作
- 远程mysql数据库很慢
- Android桌面快捷方式那些事与那些坑
- 浅论Android网络请求库——android-async-http(比较好的开源框架)
- 10个顶级的CSS3代码生成器-兄弟连IT教育
- 用<%# DataBinder.Eval(Container.DataItem,"ID")%>显示数据的,标题太长规定字数,多余的用"..."
- .NET基础——数据短路问题
- 中国剩余定理(详解)
- fcntl与文件锁 2013-11-25 15:45:55 http://blog.chinaunix.net/uid-20775448-id-4009263.html
- Java轻量级框架SSH简介
- MongoDB集成Spring Data
- mysql自动生成备份