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

首先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                                
        
                         }
                     });



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值