代码分享在osc:http://www.oschina.net/code/snippet_207873_33265
Android Restful Client的介绍
请看Google/IO 2010的,年代有些久远了,可能有些不合适,但是仍然有借鉴意义。
关于这个简单的类库
本类库简单的扩展了android-volley这个http异步请求类库,具体来说,提供以下几个功能
在后台线程进行http请求
api的封装和认证头部的管理
在后台线程对获得的数据进一步处理,比如持久化到本地的sqlite(可选操作)
更新ui,在ui线程(可选)
在ui线程提示请求过程中出现的错误,如果出错了
例子
public class TestActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化你的认证header,如果有 // PeanutAPI.init(header); int method = Request.Method.GET; String uri = "http://example.org/path"; boolean authRequired = true; Mapparams = null; PeanutAPI api = new PeanutAPI(method, uri, authRequired, params); Volley.newRequestQueue(this).add(new PeanutRequest( this, api, new PeanutProcessor () { // 可选,如果需要对data进一步处理,此方法调用在后台线程 @Override public void process(Context context, JSONObject data) throws Exception { // 对json object进一步处理,比如 // ContentValues values = convert(data); // context.getContentResolver().insert(...); } }, new Response.Listener () { // 可选,如果需要更新ui @Override public void onResponse(JSONObject response) { Toast.makeText(TestActivity.this, response.toString(), Toast.LENGTH_SHORT).show(); } }, new Response.ErrorListener() { // 必选,告知用户请求出了问题 @Override public void onErrorResponse(VolleyError error) { Toast.makeText(TestActivity.this, error.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); } } )); }}
其它
除了json object,peanut还提供了json array的处理,基本类似,事实上,你可以任意扩展volley的Request来满足自己的需要,可以参考PeanutRequest的实现