码迷,mamicode.com
首页 > 移动开发 > 详细

关于android-async-http的使用,封装网络请求

时间:2015-08-08 21:26:53      阅读:1658      评论:0      收藏:0      [点我收藏+]

标签:异步   线程   网络   异步通信   封装网络请求   

首先async是跟安卓中自带的AsyncTask很像,不过它更简单

异步基于回调的Http客户端为Android构建,是基于Apache HttpClient库的。所有的请求都是位于应用程序主线程 UI 之外,但任何回调逻辑将相同的线程上执行回调,使用Android的处理程序创建消息传递。

首先封装一下AsyncHttpClient,这个jar包中的核心类

public class AsyncHttpRequestClient 
{
	  
    private static AsyncHttpClient client = new AsyncHttpClient();  
  
    public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) 
    {  
        client.get(url, params, responseHandler);  
    }  
  
    public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) 
    {  
        client.post(url, params, responseHandler);  
    }  
    
}
AsyncHttpResponseHandler,负责处理网络请求中的回调

RequestParams, 负责参数的传递


然后封装自己的AsyncHttpResponseHandler的类

public class JSONObjectResponseHandler extends JsonHttpResponseHandler
{
	
	private Activity parent = null;
	
	public JSONObjectResponseHandler(Activity act) 
	{
		super("utf-8");
		this.parent = act;
	}
	//在调用处 重写该方法   完成自己想做的事情
	public void onJsonOk(JSONObject response)
	{
		
	}
	//解析json 的时候遇到问题
	public void onJsonFail(Throwable throwable)
	{
		Toast.makeText(this.parent, "json解析异常", Toast.LENGTH_SHORT).show();
		Log.e("net error", "error" ,throwable);
	}
	
	
	// 200 成功 而且 返回值可以转成json
	public void onSuccess(int statusCode, Header[] headers, JSONObject response) 
	{
		try 
		{
			//Toast.makeText(this.parent, response.toString(), Toast.LENGTH_SHORT).show();
			System.out.println(response.toString());
                                               //自己去做一写处理
                          JSONObject headerJsonObject = response.getJSONObject("header");
			int err = headerJsonObject.getInt("err");
			
			if(err == 0)
			{
                             this.onJsonOk(response.getJSONObject("body"));
			}
			else
			{
			Toast.makeText(this.parent, headerJsonObject.getString("errMsg"), Toast.LENGTH_SHORT).show();
			}
		}
		catch (JSONException e) 
		{
			e.printStackTrace();
        //  onJsonFail(Throwable throwable)
          }};<span style="font-family:Palatino Linotype,Palatino,Book Antiqua,serif;">
// 请求失败 或者返回值无法 转成json</span>
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) 
    {
     System.out.println(responseString);//
       Log.v("error", responseString);
    }
}





最后去使用它

         AsyncHttpRequestClient.post(url, params,
				new JSONObjectResponseHandler(this)
		            {
			public void onJsonOk(JSONObject response)
			{
                                  //网路请求成功 并得到啦 正确的结果  你现在可以去 解析 response                                
        
                         }
                     });



版权声明:本文为博主原创文章,未经博主允许不得转载。

关于android-async-http的使用,封装网络请求

标签:异步   线程   网络   异步通信   封装网络请求   

原文地址:http://blog.csdn.net/king866/article/details/47360733

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!