JAR——android-async-http-1.4.5

  1. http框架:实现异步访问网络;

  2. 使用方法:

(1)创建HttpUtil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public  class  HttpUtil {
 
     private  static  AsyncHttpClient client =  new  AsyncHttpClient();  // 实例话对象
     
     static  {
         client.setTimeout( 11000 );  // 设置链接超时,如果不设置,默认为10s
     }
 
     /**
      * url不带参数返回String
      * @param urlString url
      * @param res 处理handler
      */
     public  static  void  get(String urlString, AsyncHttpResponseHandler res){ 
 
         client.get(urlString, res);
     }
 
     /**
      * url带参数返回String
      * @param urlString url
      * @param params url中的参数
      * @param res 处理handler
      */
     public  static  void  get(String urlString, RequestParams params,AsyncHttpResponseHandler res){  // url里面带参数
     
         client.get(urlString, params, res);
     }
 
     /**
      * 不带参数返回json
      * @param urlString url 
      * @param res 处理handler
      */
     public  static  void  get(String urlString, JsonHttpResponseHandler res){  // 不带参数,获取json对象或者数组
     
         client.get(urlString, res);
     }
 
     /**
      * 带参数,返回json
      * @param urlString url
      * @param params url参数
      * @param res 处理handler
      */
     public  static  void  get(String urlString, RequestParams params,JsonHttpResponseHandler res){  // 带参数,获取json对象或者数组
     
         client.get(urlString, params, res);
         
     }
 
     /**
      * 不带参数,返回byte数据
      * @param uString url
      * @param bHandler 处理handler
      */
     public  static  void  get(String uString, BinaryHttpResponseHandler bHandler){  // 下载数据使用,会返回byte数据
     
         client.get(uString, bHandler);
     }
     
     /**
      * 带参数的post 请求c#
      * @param url
      * @param params
      * @param responseHandler
      */
     public  static  void  post(Context context,String url,HttpEntity entity, ResponseHandlerInterface responseHandler){
         
         client.post(context, url, entity,  "application/json" , responseHandler); //关键是设置content-type = "application/json"
     }
 
     public  static  AsyncHttpClient getClient() {
         return  client;
     }
     
     
 
}

(2)在Activity中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//url获取
String url = getString(R.string.url);
             //初始化网络请求参数
             RequestParams params =  new  RequestParams();
             params.put(username, username);
             params.put(password, password);
             //网络请求,处理返回数据
             HttpUtil.get(MyConsts.URL_LOGIN, params,  new  JsonHttpResponseHandler(){
                 //网络请求成功
                 public  void  onSuccess( int  statusCode, Header[] headers,
                         JSONObject response) {
                                         
                     //成功获取网络数据,在这里处理网络返回的数据
                 }
                 //服务器请求失败
                 public  void  onFailure( int  statusCode, Header[] headers,
                         String responseString, Throwable throwable) {                                     //访网络失败
                 
                 }
                 //请求结束,不管成功与否都调用该方法
                 public  void  onFinish() {
                     
                                         //无论成功与否都会执行该方法
                     
                 }
             });
 
             
             
             
//使用post请求c#服务
String username = et_RegisterUsername.getText().toString();
         String password = et_RegisterPasswd.getText().toString();
         String realname = et_RegisterTruename.getText().toString();
 
         if  (Valid.valid(username) && Valid.stringIsEmail(username)
                 && Valid.valid(password) && Valid.valid(realname)) {
 
                         //将参数按照键值对的形式添加到一个json对象中,因为与c#交互需要传递一个json串
             JSONObject json =  new  JSONObject();
             try  {
                 json.put(usernameP, username);
                 json.put(passwordP, password);
                 json.put(realNameP, realname);
                 json.put(originP, origin);
 
                 StringEntity entity =  new  StringEntity(json.toString());
 
                 HttpUtil.post(LoginActivity. this , url, entity,
                         new  JsonHttpResponseHandler() {
                             public  void  onFinish() {
                                 cancelProgressDialog();
                             }
 
                             public  void  onFailure( int  statusCode,
                                     Header[] headers, String responseString,
                                     Throwable throwable) {
                         
                                 Log.d( "failure:" , responseString);
                             }
                             
                             public  void  onSuccess( int  statusCode,
                                     Header[] headers, JSONObject response) {
                                 
                             }
                         });
             catch  (JSONException e) {
                 e.printStackTrace();
             catch  (UnsupportedEncodingException e) {
                 e.printStackTrace();
             }
         }

特别注意:onFinish方法在onSucess()和onFailure()方法执行之前执行;

















本文转自wauoen51CTO博客,原文链接:http://blog.51cto.com/7183397/1606631 ,如需转载请自行联系原作者



你可能感兴趣的:(JAR——android-async-http-1.4.5)