Android-async-http的Get和Post请求方式的使用
Android-async-http回调逻辑的二次封装
Get和Post用于与服务器间请求和发送数据。
建立请求首先建立请求客户端对象。
然后进行相应的Get和Post请求,请求结果在回调里获取解析。
Async-http的Get和Post请求可以基于参数化请求(RequestParams),可以清晰方便的将你的请求参数放到里面,然后进行Get和Post请求。
Async-http有自己的默认的回调逻辑封装,例如请求成功,请求失败,重试请求等回调。
但是为了我们整个APP的网络模块的封装和请求管理,我们要进行一个二次的定制化回调封装,这样可以全面控制和管理定制我们的网络请求整个过程。
/** * 1. Android-async-http的Get和Post请求方式的使用 * * 2.Android-async-http回调逻辑的二次封装 */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // asynchttpGet(); asynchttpPost(); } private void asynchttpGet() { AsyncHttpClient client = new AsyncHttpClient(); String url = "http://apis.juhe.cn/mobile/get?phone=13666666666&key=335adcc4e891ba4e4be6d7534fd54c5d"; client.get(url, new AsyncHttpResponseHandler() { @Override public void onSuccess(String arg0) { // TODO Auto-generated method stub super.onSuccess(arg0); Toast.makeText(MainActivity.this, arg0, Toast.LENGTH_LONG) .show(); } @Override public void onFailure(Throwable arg0) { Toast.makeText(MainActivity.this, "网络请求失败", Toast.LENGTH_LONG) .show(); super.onFailure(arg0); } }); } private void asynchttpPost() { String url = "http://apis.juhe.cn/mobile/get?"; RequestParams params = new RequestParams(); params.put("phone", "13666666666"); params.put("key", "335adcc4e891ba4e4be6d7534fd54c5d"); RequestUtils.ClientPost(url, params, new NetCallBack() { @Override public void onMySuccess(String result) { Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG) .show(); } @Override public void onMyFailure(Throwable arg0) { Toast.makeText(MainActivity.this, "请求失败", Toast.LENGTH_LONG) .show(); } }); } }
public abstract class NetCallBack extends AsyncHttpResponseHandler { @Override public void onStart() { Log.i("info", "请求开始,弹出进度条框"); super.onStart(); } @Override public void onSuccess(String arg0) { Log.i("info", "请求成功,隐藏进度条框:" + arg0); onMySuccess(arg0); super.onSuccess(arg0); } @Override public void onFailure(Throwable arg0) { Log.i("info", "请求失败,隐藏进度条框:" + arg0); super.onFailure(arg0); onMyFailure(arg0); } public abstract void onMySuccess(String result); public abstract void onMyFailure(Throwable arg0); }
public class RequestUtils { public static AsyncHttpClient client = new AsyncHttpClient(); public static void ClientGet(String url, NetCallBack cb) { client.get(url, cb); } public static void ClientPost(String url, RequestParams params, NetCallBack cb) { client.post(url, params, cb); } }