生活随笔
收集整理的這篇文章主要介紹了
Android应用中使用AsyncHttpClient来异步网络数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先下載AsyncHttpClient的庫文件,可以自行搜索,可以到下面地址下載
http://download.csdn.net/detail/xujinyang1234/5767419
測試的Activity,用到了RequstClient,LoadCacheResponseLoginouthandler,LoadDatahandler三個重寫的類
[java]?view plaincopyprint?
package?com.example.asynchttpclienttest;?? ?? import?android.app.Activity;?? import?android.os.Bundle;?? import?android.view.Menu;?? import?android.widget.TextView;?? ?? import?com.loopj.android.http.RequestParams;?? ?? public?class?MainActivity?extends?Activity?{?? ????private?TextView?test;?? ?? ????@Override?? ????protected?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ????????setContentView(R.layout.activity_main);?? ????????init();?? ????}?? ?? ????private?void?init()?{?? ????????test?=?(TextView)?findViewById(R.id.test);?? ????????System.out.println("拉拉");?? ????????RequestParams?param?=?new?RequestParams();?? ????????param.put("id",?1?+?"");?? ????????RequstClient.get(?? ????????????????"http://58.192.23.75:8080/xiaoxiao2/ColumnServletAndroid",?? ????????????????param,?new?LoadCacheResponseLoginouthandler(MainActivity.this,?? ????????????????????????new?LoadDatahandler()?{?? ????????????????????????????@Override?? ????????????????????????????public?void?onStart()?{?? ????????????????????????????????super.onStart();?? ????????????????????????????????test.setText("開始拉去數(shù)據(jù)");?? ????????????????????????????}?? ?? ????????????????????????????@Override?? ????????????????????????????public?void?onSuccess(String?data)?{?? ????????????????????????????????super.onSuccess(data);?? ????????????????????????????????test.setText(data);?? ????????????????????????????????System.out.println("拉倒的數(shù)據(jù)"?+?data);?? ????????????????????????????}?? ?? ????????????????????????????@Override?? ????????????????????????????public?void?onFailure(String?error,?String?message)?{?? ????????????????????????????????super.onFailure(error,?message);?? ????????????????????????????????test.setText("錯誤的數(shù)據(jù)"?+?message);?? ????????????????????????????}?? ?? ????????????????????????????@Override?? ????????????????????????????public?void?onFinish()?{?? ????????????????????????????????super.onFinish();?? ????????????????????????????}?? ????????????????????????}));?? ????}?? ?? ????@Override?? ????public?boolean?onCreateOptionsMenu(Menu?menu)?{?? ????????getMenuInflater().inflate(R.menu.main,?menu);?? ????????return?true;?? ????}?? ?? }?? RequstClient.java
[java]?view plaincopyprint?
package?com.example.asynchttpclienttest;?? ?? import?com.loopj.android.http.AsyncHttpClient;?? import?com.loopj.android.http.AsyncHttpResponseHandler;?? import?com.loopj.android.http.RequestParams;?? ?? public?class?RequstClient?{?? ????? ? ?? ????private?static?AsyncHttpClient?mClient?=?new?AsyncHttpClient();?? ????static?{?? ????????mClient.setTimeout(20000);?? ????}?? ????public?static?void?post(String?url,?AsyncHttpResponseHandler?handler)?{?? ????????post(url,?null,?handler);?? ????}?? ????? ? ? ? ? ? ? ? ? ?? ????public?static?void?post(String?url,?RequestParams?params,?? ????????????AsyncHttpResponseHandler?handler)?{?? ????????System.out.println("進(jìn)入post");?? ????????mClient.post(url,?params,?handler);?? ????}?? ????public?static?void?get(String?url,?AsyncHttpResponseHandler?handler)?{?? ?? ????}?? ????public?static?void?get(String?url,?RequestParams?params,?? ????????????AsyncHttpResponseHandler?handler)?{?? ????????System.out.println("進(jìn)入get");?? ????????mClient.get(url,?params,?handler);?? ????}?? }??
[java]?view plaincopyprint?
package?com.example.asynchttpclienttest;?? ?? import?org.apache.http.Header;?? ?? import?android.content.Context;?? ?? import?com.loopj.android.http.AsyncHttpResponseHandler;?? ?? public?class?LoadCacheResponseLoginouthandler?extends?AsyncHttpResponseHandler?{?? ????private?Context?context;?? ????private?LoadDatahandler?mHandler;?? ?? ????public?LoadCacheResponseLoginouthandler(Context?context,?? ????????????LoadDatahandler?mHandler)?{?? ????????this.context?=?context;?? ????????this.mHandler?=?mHandler;?? ????}?? ????@Override?? ????public?void?onStart()?{?? ????????super.onStart();?? ????????mHandler.onStart();?? ????}?? ????@Override?? ????public?void?onFailure(Throwable?error,?String?content)?{?? ????????super.onFailure(error,?content);?? ????????mHandler.onFailure("",?"網(wǎng)絡(luò)連接超時");?? ????}?? ????@Override?? ????public?void?onFinish()?{?? ????????super.onFinish();?? ????????mHandler.onFinish();?? ????}?? ?? ????@Override?? ????public?void?onSuccess(int?statusCode,?Header[]?headers,?String?content)?{?? ????????super.onSuccess(statusCode,?headers,?content);?? ????????System.out.println("得到的返回碼"?+?statusCode);?? ????????try?{?? ????????????switch?(statusCode)?{?? ????????????case?200:?? ????????????????mHandler.onSuccess(content);?? ????????????????System.out.println("返回的內(nèi)容"?+?content);?? ????????????????break;?? ????????????case?401:?? ????????????????onFailure("401",?"沒有登錄");?? ?? ????????????????break;?? ????????????case?403:?? ????????????????onFailure("404",?"沒有權(quán)限");?? ????????????????break;?? ????????????default:?? ????????????????break;?? ????????????}?? ?? ????????}?catch?(Exception?e)?{?? ????????????e.printStackTrace();?? ????????}?? ????}?? ?? ????? ? ? ? ? ?? ????public?void?onFailure(String?error,?String?errorMessage)?{?? ????????if?(errorMessage?!=?null)?{?? ????????????mHandler.onFailure(error,?errorMessage);?? ????????}?? ????}?? }??
接口:
[java]?view plaincopyprint?
package?com.example.asynchttpclienttest;?? ?? public?class?LoadDatahandler?{?? ????? ? ?? ????public?void?onStart()?{};?? ????? ? ? ?? ????public?void?onLoadCaches(String?data)?{};?? ????? ? ? ?? ????public?void?onSuccess(String?data)?{};?? ?????? ????? ? ? ? ?? ????public?void?onFailure(String?error,?String?message)?{};?? ????? ? ?? ????public?void?onFinish()?{};?? ?? }?? 擴(kuò)展:
Android在AsyncHttpClient框架的基礎(chǔ)上定制能直接返回對象數(shù)組的框架
總結(jié)
以上是生活随笔為你收集整理的Android应用中使用AsyncHttpClient来异步网络数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。