做项目时,用到了网络知识,现在我使用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", "数据请求失败");
}
});
}
}