android开源框架android-async-http使用
2013-07-24 17:08
567 查看
android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单,下面做简单介绍,具体详细使用看官网:https://github.com/loopj/android-async-http
1.新建项目,去官网下载zip包,解压,打开releases文件,把里面最新的jar包,考入项目工程libs目录下,引入包。
2.通过1,就可以使用了,很简单,下面是自己写的demo,用它提供的各种不同方法完成从服务器获取一个json数据:
查看源码
打印?
这个类主要列出了我们常用的get方法,在要使用的地方,调用该类就行了。
具体使用的类:
查看源码
打印?
布局文件:
查看源码
打印?
很简单很实用,上面只是get方法的,上传数据,和这个也差不多,大家自己建个服务器,试试。记得加入网文网络的权限和向sdcard的访问权限
1.新建项目,去官网下载zip包,解压,打开releases文件,把里面最新的jar包,考入项目工程libs目录下,引入包。
2.通过1,就可以使用了,很简单,下面是自己写的demo,用它提供的各种不同方法完成从服务器获取一个json数据:
查看源码
打印?
01 | package com.http; |
02 | import com.loopj.android.http.AsyncHttpClient; |
03 | import com.loopj.android.http.AsyncHttpResponseHandler; |
04 | import com.loopj.android.http.BinaryHttpResponseHandler; |
05 | import com.loopj.android.http.JsonHttpResponseHandler; |
06 | import com.loopj.android.http.RequestParams; |
07 |
08 | public class HttpUtil { |
09 | private static AsyncHttpClient client = new AsyncHttpClient(); //实例话对象 |
10 | static |
11 | { |
12 | client.setTimeout( 11000 ); //设置链接超时,如果不设置,默认为10s |
13 | } |
14 | public static void
//用一个完整url获取一个string对象 |
15 | { |
16 | client.get(urlString,res); |
17 | } |
18 | public static void get(String urlString,RequestParams params,AsyncHttpResponseHandler res) //url里面带参数 |
19 | { |
20 | client.get(urlString,params,res); |
21 | } |
22 | public static void get(String urlString,JsonHttpResponseHandler res) //不带参数,获取json对象或者数组 |
23 | { |
24 | client.get(urlString,res); |
25 | } |
26 | public static void get(String urlString,RequestParams params,JsonHttpResponseHandler res) //带参数,获取json对象或者数组 |
27 | { |
28 | client.get(urlString,params,res); |
29 | } |
30 | public static void get(String uString,BinaryHttpResponseHandler bHandler) //下载数据使用,会返回byte数据 |
31 | { |
32 | client.get(uString,bHandler); |
33 | } |
34 | public static AsyncHttpClient getClient() |
35 | { |
36 | return client; |
37 | } |
38 | } |
具体使用的类:
查看源码
打印?
001 | package com.http; |
002 |
003 | import java.io.File; |
004 | import java.io.FileOutputStream; |
005 |
006 | import org.json.JSONArray; |
007 | import org.json.JSONObject; |
008 |
009 | import android.app.Activity; |
010 | import android.app.ProgressDialog; |
011 | import android.os.Bundle; |
012 | import android.os.Environment; |
013 | import android.util.Log; |
014 | import android.view.View; |
015 | import android.widget.TextView; |
016 | import android.widget.Toast; |
017 |
018 | import com.loopj.android.http.AsyncHttpResponseHandler; |
019 | import com.loopj.android.http.BinaryHttpResponseHandler; |
020 | import com.loopj.android.http.JsonHttpResponseHandler; |
021 | import com.loopj.android.http.RequestParams; |
022 |
023 | public class MainActivity extends Activity { |
024 | private TextView textView; // 顶部textview |
025 | private ProgressDialog pDialog; |
026 | private TextView textView2; // 下面textview,显示获取的所有数据 |
027 | @Override |
028 | protected void onCreate(Bundle savedInstanceState) { |
029 | super .onCreate(savedInstanceState); |
030 | setContentView(R.layout.activity_main); |
031 | textView = (TextView) findViewById(R.id.text); |
032 | textView2 = (TextView) findViewById(R.id.text2); |
033 | } |
034 | public void method1(View view) { |
035 | pDialog = ProgressDialog.show( this , "请稍等" , "数据加载中" ); |
036 | String urlString = "http://client.azrj.cn/json/cook/cook_list.jsp?type=1&p=2&size=10" ; // 一個獲取菜谱的url地址 |
037 | HttpUtil.get(urlString, new AsyncHttpResponseHandler() { |
038 | public void onSuccess(String arg0) { // 获取数据成功会调用这里 |
039 | pDialog.dismiss(); |
040 | textView.setText( "获取json数据成功,看下面" ); |
041 | textView2.setText(arg0); |
042 | Log.i( "hck" ,arg0); |
043 | }; |
044 | public void onFailure(Throwable arg0) { // 失败,调用 |
045 | Toast.makeText(MainActivity. this , "onFailure" , |
046 | Toast.LENGTH_LONG).show(); |
047 | }; |
048 | public void onFinish() { // 完成后调用,失败,成功,都要掉 |
049 | }; |
050 | }); |
051 | } |
052 | public void method2(View view) { |
053 | String urlString = "http://client.azrj.cn/json/cook/cook_list.jsp?" ; |
054 | RequestParams params = new RequestParams(); // 绑定参数 |
055 | params.put( "type" , "1" ); |
056 | params.put( "p" , "2" ); |
057 | params.put( "size" , "10" ); |
058 | HttpUtil.get(urlString,params, new JsonHttpResponseHandler() { |
059 | public void onSuccess(JSONArray arg0) { // 成功后返回一个JSONArray数据 |
060 | Log.i( "hck" ,arg0.length() + "" ); |
061 | try { |
062 | textView.setText( "菜谱名字:" |
063 | + arg0.getJSONObject( 2 ).getString( "name" )); //返回的是JSONArray, 获取JSONArray数据里面的第2个JSONObject对象,然后获取名字为name的数据值 |
064 | } catch (Exception e) { |
065 | Log.e( "hck" ,e.toString()); |
066 | } |
067 | }; |
068 | public void onFailure(Throwable arg0) { |
069 | Log.e( "hck" , " onFailure" + arg0.toString()); |
070 | }; |
071 | public void onFinish() { |
072 | Log.i( "hck" , "onFinish" ); |
073 | }; |
074 | public void onSuccess(JSONObject arg0) { //返回的是JSONObject,会调用这里 |
075 | Log.i( "hck" , "onSuccess " ); |
076 | try { |
077 | textView.setText( "菜谱名字:" |
078 | + arg0.getJSONArray( "list" ).getJSONObject( 0 ) |
079 | .getString( "name" )); |
080 | } catch (Exception e) { |
081 | Log.e( "hck" ,e.toString()); |
082 | } |
083 | }; |
084 | }); |
085 | } |
086 | public void method3(View view) { |
087 | String urlString = "http://client.azrj.cn/json/cook/cook_list.jsp?type=1&p=2&size=10" ; |
088 | HttpUtil.get(urlString, new JsonHttpResponseHandler() { |
089 | public void onSuccess(JSONObject arg0) { |
090 | try { |
091 | textView.setText( "菜谱名字:" |
092 | + arg0.getJSONArray( "list" ).getJSONObject( 1 ) |
093 | .getString( "name" )); |
094 | } catch (Exception e) { |
095 | Log.e( "hck" ,e.toString()); |
096 | } |
097 | }; |
098 | }); |
099 | } |
100 | public void method4(View view) { |
101 | String urlString = "http://client.azrj.cn/json/cook/cook_list.jsp?" ; |
102 | final RequestParams params = new RequestParams(); |
103 | params.put( "type" , "1" ); |
104 | params.put( "p" , "2" ); |
105 | params.put( "size" , "10" ); |
106 | HttpUtil.get(urlString,params, new AsyncHttpResponseHandler() { |
107 | public void onSuccess(String arg0) { |
108 | try { |
109 | JSONObject jObject = new JSONObject(arg0); |
110 | textView.setText( "菜谱名字:" |
111 | + jObject.getJSONArray( "list" ).getJSONObject( 2 ) |
112 | .getString( "name" )); |
113 | Log.i( "hck" ,params.getEntity().toString()); |
114 | } catch (Exception e) { |
115 | } |
116 | }; |
117 | }); |
118 | } |
119 | public void method5(View view) { |
120 | String url = "http://f.hiphotos.baidu.com/album/w%3D2048/sign=38c43ff7902397ddd6799f046dbab3b7/9c16fdfaaf51f3dee973bf7495eef01f3b2979d8.jpg" ; |
121 | HttpUtil.get(url, new BinaryHttpResponseHandler() { |
122 | @Override |
123 | public void onSuccess( byte [] arg0) { |
124 | super .onSuccess(arg0); |
125 | File file = Environment.getExternalStorageDirectory(); |
126 | File file2 = new File(file, "cat" ); |
127 | file2.mkdir(); |
128 | file2 = new File(file2, "cat.jpg" ); |
129 | try { |
130 | FileOutputStream oStream = new FileOutputStream(file2); |
131 | oStream.write(arg0); |
132 | oStream.flush(); |
133 | oStream.close(); |
134 | textView.setText( "可爱的猫咪已经保存在sdcard里面" ); |
135 | } catch (Exception e) { |
136 | e.printStackTrace(); |
137 | Log.i( "hck" ,e.toString()); |
138 | } |
139 | } |
140 | }); |
141 | } |
142 | } |
查看源码
打印?
01 | < ScrollView |
02 | xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | xmlns:tools = "http://schemas.android.com/tools" |
04 | android:layout_width = "match_parent" |
05 | android:layout_height = "match_parent" |
06 | android:orientation = "vertical" |
07 | android:gravity = "center_horizontal" |
08 | > |
09 | < LinearLayout |
10 | android:layout_width = "fill_parent" |
11 | android:layout_height = "fill_parent" |
12 | android:orientation = "vertical" |
13 | android:gravity = "center_horizontal" > |
14 | < TextView |
15 | android:textColor = "#FF0000" |
16 | android:textSize = "16sp" |
17 | android:layout_marginTop = "20dp" |
18 | android:gravity = "center_horizontal" |
19 | android:id = "@+id/text" |
20 | android:layout_width = "wrap_content" |
21 | android:layout_height = "wrap_content" |
22 | android:text = "获取数据完成后会显示在这里" /> |
23 | < Button |
24 | android:layout_marginTop = "50dp" |
25 | android:id = "@+id/bt1" |
26 | android:layout_width = "wrap_content" |
27 | android:layout_height = "wrap_content" |
28 | android:text = "第一种" |
29 | android:onClick = "method1" |
30 | /> |
31 | < Button |
32 | android:id = "@+id/bt2" |
33 | android:layout_width = "wrap_content" |
34 | android:layout_height = "wrap_content" |
35 | android:text = "第2种" |
36 | android:onClick = "method2" |
37 | /> |
38 | < Button |
39 | android:id = "@+id/bt3" |
40 | android:layout_width = "wrap_content" |
41 | android:layout_height = "wrap_content" |
42 | android:text = "第3种" |
43 | android:onClick = "method3" |
44 | /> |
45 | < Button |
46 | android:id = "@+id/bt4" |
47 | android:layout_width = "wrap_content" |
48 | android:layout_height = "wrap_content" |
49 | android:text = "第4种" |
50 | android:onClick = "method4" |
51 | /> |
52 | < Button |
53 | android:id = "@+id/bt5" |
54 | android:layout_width = "wrap_content" |
55 | android:layout_height = "wrap_content" |
56 | android:text = "第5种" |
57 | android:onClick = "method5" |
58 | /> |
59 | < TextView |
60 | android:textColor = "#FF0000" |
61 | android:textSize = "16sp" |
62 | android:layout_marginTop = "20dp" |
63 | android:gravity = "center_horizontal" |
64 | android:id = "@+id/text2" |
65 | android:layout_width = "wrap_content" |
66 | android:layout_height = "wrap_content" |
67 | /> |
68 | </ LinearLayout > |
69 | </ ScrollView > |
相关文章推荐
- android开源框架android-async-http使用
- android开源框架android-async-http使用
- android开源框架andorid-async-http使用(下载上传文件)
- android开源框架android-async-http使用
- android开源框架android-async-http详细的使用介绍
- 开源框架android-async-http使用
- android开源框架android-async-http使用
- android开源框架android-async-http使用
- Android 使用开源框架AsyncHttpClient上传文件到服务器
- android开源框架android-async-http使用
- Android 文件上传 使用AsyncHttpClient开源框架
- Android开源框架--AsyncHttpClient (android-async-http)使用
- android开源框架android-async-http使用
- android开源框架android-async-http使用
- android开源框架android-async-http使用
- 使用开源框架android-async-http提交数据
- Android开源框架AsyncHttpClient (android-async-http)使用
- android开源框架andorid-async-http使用
- android开源框架android-async-http使用
- 开源框架android-async-http使用