android上网络请求大致分为使用socket和http,普通应用大多使用http或者https,今天主要介绍http,实现目标通过使用http搭建一套简单的Android网络请求框架。
网络请求部分:
Android的网络请求部分我们大致分为:
参数传递,网络请求,多线程处理,结果数据格式转换,状态回调赋值处理。这几快内容。
当然还有网络加密处理,缓存处理,泛型参数传递、登录前操作拦截等内容需要添加。
案例一:
请求参数定义:
/*** * 定义基础请求参数类 * @param <T> */ public abstract class BaseParser<T> { public abstract T parseJSON(String paramString) throws JSONException; /** * * @throws JSONException */ public String checkResponse(String paramString) throws JSONException { if (paramString == null) { return null; } else { JSONObject jsonObject = new JSONObject(paramString); String result = jsonObject.getString("response"); if (result != null && !result.equals("error")) { return result; } else { return null; } } } }
请求参数举例:
/** * 列表请求参数-捎带数据Bean * @author */ public class ListPageParser extends BaseParser<List<ListpageItemBean>>{ @Override public List<ListpageItemBean> parseJSON(String paramString) throws JSONException { if (!TextUtils.isEmpty(checkResponse(paramString))) { return (List<ListpageItemBean>)(GsonParseUtils.Gson2Object(paramString,null)); } JDLog.e("ListPageParser-->","解析JSON出错"); return new ArrayList<ListpageItemBean>(); } }
/** * 使用Gson解析相应Bean */ public class GsonParseUtils { private static Gson gson = new Gson(); public static Object Gson2Object(String json, Type tp) { try { return gson.fromJson(json, tp); } catch (Exception e) { e.printStackTrace(); LogUtil.e(GsonParseUtils.class, "ParseUtils 解析失败", 15); return null; } } public static String Object2Json(Object json) { try { return gson.toJson(json); } catch (Exception e) { e.printStackTrace(); LogUtil.e(GsonParseUtils.class, "ParseUtils 转化失败", 27); return null; } } }
/** * 定义网络请求参数 */ public class RequestVo { public String requestUrl; public Context context; public HashMap<String, String> requestDataMap; public BaseParser<?> jsonParser;