做項目時,用到了網絡知識,現在我使用AsyncHttpClient寫了一個網絡demo,在這裏記錄一些,對他的一些基礎使用
首先,AsyncHttpClient是封裝好的網絡類,使用起來非常方便,該類可以實現大部分的網絡功能,
AsyncHttpClient的jar包可以從網上下載,有很多,
使用方法:1.實例化一個AsyncHttpClient類,AsyncHttpClient clint=new AsyncHttpClient();
clint實例中有很多方法,比如設置網絡超時,clint.setTimeOut();
2.向服務器發送請求,clint.get(url,AsyncHttpResponseHandler),不帶任何數據向服務器發出請求
要注意的是,AsyncHttpResponseHandler接口,發送請求的過程是看不到的(因爲被分裝在jar包中),但是,服務器返回的數據是可以看見的,並且可以對數據進行各種處理,主要就是AsyncHttpResponseHandler中的方法
onStart()//發送請求時調用
onSuccess()//服務器成功返回數據時調用
onFailure()//服務器發送失敗應答,或網絡有異常
onFinish()//最後肯定會調用的
運行窗口
public class MainActivity extends Activity {
private URL url;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Request.get("http://api.wallstreetcn.com:80/v2/posts/specials");
}
});
}
網絡處理reques.java
public class Request {
private static List<SpecialEntity> list=new ArrayList<SpecialEntity>();
private static AsyncHttpClient mClient=new AsyncHttpClient();
static{
mClient.setTimeout(20000);
}
public static void post(String url,AsyncHttpResponseHandler hander){
}
public static void get(String url){
mClient.get(url, new AsyncHttpResponseHandler() {
@Override
public void onFinish() {
// TODO Auto-generated method stub
super.onFinish();
}
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d("onStart()","==="+"開始從網上獲取數據");
}
@Override
public void onSuccess(int arg0, Header[] head, byte[] content) {
// TODO Auto-generated method stub
Log.d("onSuccess()", "===成功請求導數據");
String response = null;
JSONObject jsonObject=null;
JSONArray jsonArray=null;
Gson gson=new Gson();
try {
response=new String(content, "utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
jsonObject=new JSONObject(response);
jsonArray=jsonObject.getJSONArray("results");
String result=jsonObject.getString("results");
list =gson.fromJson(result, new TypeToken<List<SpecialEntity>>(){}.getType());
Log.d("onSuccess", ""+list.size());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
// TODO Auto-generated method stub
Log.d("onFailure", "數據請求失敗");
}
});
}
}