关于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                                

                         }
                     });

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

时间: 2024-12-05 14:25:50

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

[iOS微博项目 - 3.3] - 封装网络请求

github: https://github.com/hellovoidworld/HVWWeibo A.封装网络请求 1.需求 为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网络请求封装成自己的工具类,以后便于更换网络框架. 2.思路 创建一个自定义工具类,提供类方法来实现网络请求 3.实现 1 // 2 // HVWNetworkTool.h 3 // HVWWeibo 4 // 5 // Created by hellovoidworld on 15/2/9. 6 //

封装网络请求

封装网络请求类便捷, 适合多个地方使用. 第一封装下载方法 前提用Cocoapods或者直接引用第三方AFNetWorking 定义一个类NetWorkingManager, 继承于NSObject A: 在.h中写方法声明 #import <Foundation/Foundation.h> @interface NetWorkManager : NSObject - (void)downLoadWithUrl:(NSString *)url progress:(void(^)(float p

四种网络请求的方式封装网络请求

封装网络请求类便捷, 适合多个地方使用. 第一封装下载方法 前提用Cocoapods或者直接引用第三方AFNetWorking 定义一个类NetWorkingManager, 继承于NSObject A: 在.h中写方法声明 #import <Foundation/Foundation.h> @interface NetWorkManager : NSObject - (void)downLoadWithUrl:(NSString *)url progress:(void(^)(float p

App 组件化/模块化之路——如何封装网络请求框架

App 组件化/模块化之路——如何封装网络请求框架 在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库.例如 okhttp retrofit android-async-http 这些网络请求库很大程度上提高程序猿的编码效率.但是随着业务的发展,App 变得越来越大,我们将这些网络请求库加入到项目中直接使用,对我们业务类的入侵是非常强的.如果要进行业务分离时,这些网络请求代码将是一个阻止我们进一步工作的绊脚石.对开发者来说是非常痛苦的. 因此我们构建的网络请求框

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

iOS开发项目篇—35封装网络请求

iOS开发项目篇—35封装网络请求 一.简单说明 1.分析项目对网路请求(AFN框架)的依赖 项目中,多个控制器都使用了AFN框架发送网络请求,如果AFN2.0存在重大BUg,或者是升级至3.0版本,那么对于整个项目都是及其危险的,所有用到AFN的地方都需要做出相应的修改. 另外,如果现在要求不再使用AFN框架,而是使用一个新的框架,那么有关AFN的依赖所关联的所有代码都需要重新来过. 如果把afn这个第三方框架从项目中删除的话,那么项目就相当于作废了,这就是项目对第三方框架的强依赖的体现. 说

事件传递参数-封装网络请求api

1==>通过点击事件进行传递参数 <view bindtap="goEdution" data-index="5">西南大学</view> <view bindtap="goEdution" data-index="6">北京师范</view> <view bindtap="goEdution" data-index="7"&g

微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据

§ 封装网络请求及 mock 数据 本文配套视频地址:https://v.qq.com/x/page/i0554... 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发工具 上一节中,我们对 index.js 文件中增加了 util 对象,并在对象中封装了很多公用方法 let util = { log(){--}, alert(){--}, getStorageData(){--}, setStorageData(){--} } 本节中,我们对常用的网络请求方法 wx.reques

转-封装网络请求库,统一处理通用异常 (基于volley网络请求库)

http://blog.csdn.net/kroclin/article/details/40540761 一.前言 volley的发布让网络请求也变得十分便利,但是我们通常懒得很想用一两句代码实现一个网络请求,其实你再经过封装就可以做到的.还有就是实际开发当中,我们会常常遇到很多异常情况,如网络异常.超时异常等等,那么我们如果有10个activity需要请求数据,那么在10个activity当中都去处理这些异常就变得十分麻烦,通过合理的设计其实我们能够在一个地方对异常情况进行统一处理,只有正确