package com.letv.http.impl; import java.io.IOException; import com.letv.http.LetvHttpJavaHandler; import com.letv.http.LetvHttpLog; import com.letv.http.bean.LetvBaseBean; import com.letv.http.bean.LetvDataHull; import com.letv.http.exception.DataIsErrException; import com.letv.http.exception.DataIsNullException; import com.letv.http.exception.JsonCanNotParseException; import com.letv.http.exception.ParseException; import com.letv.http.parse.LetvBaseParser; /** * 请求封装内 * */ public final class LetvHttpTool<T extends LetvBaseBean> { public <D> LetvDataHull<T> requsetData(LetvHttpBaseParameter<T, D , ?> httpParameter){ LetvDataHull<T> dataHull ; if(httpParameter == null){ dataHull = new LetvDataHull<T>(); dataHull.setDataType(LetvDataHull.DataType.PARAMS_IS_NULL); LetvHttpLog.Err("Parameter is null"); return dataHull ; } if(httpParameter.getType() == LetvHttpParameter.Type.GET){ dataHull = doGet(httpParameter); }else if(httpParameter.getType() == LetvHttpParameter.Type.POST){ dataHull = doPost(httpParameter); }else{ dataHull = new LetvDataHull<T>(); dataHull.setDataType(LetvDataHull.DataType.REQUESTMETHOD_IS_ERR); LetvHttpLog.Err("RequestMethod is error"); return dataHull ; } dataHull.setUpdataId(httpParameter.getUpdataId()); return dataHull; } private <D> LetvDataHull<T> doGet(LetvHttpBaseParameter<T, D , ?> httpParameter) { LetvBaseParser<T , D> parser = httpParameter.getParser(); String response = ""; LetvDataHull<T> dataHull = new LetvDataHull<T>(); try { LetvHttpJavaHandler handler = new LetvHttpJavaHandler() ; response = handler.doGet(httpParameter); if(parser != null){ dataHull.setDataEntity(parser.initialParse(response)); dataHull.setDataType(LetvDataHull.DataType.DATA_IS_INTEGRITY); dataHull.setSourceData(response); LetvHttpLog.Err("complete!"); return dataHull ; }else{ dataHull.setDataType(LetvDataHull.DataType.DATA_PARSER_IS_NULL); LetvHttpLog.Err("Do not have parser"); } } catch (IOException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.CONNECTION_FAIL); LetvHttpLog.Err("connected is fail"); } catch (ParseException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_PARSE_EXCEPTION); LetvHttpLog.Err("parse error"); } catch (DataIsNullException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_IS_NULL); LetvHttpLog.Err("data is null"); } catch (JsonCanNotParseException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_CAN_NOT_PARSE); dataHull.setErrMsg(parser.getErrorMsg()); LetvHttpLog.Err("canParse is false"); } catch (DataIsErrException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_IS_ERR); LetvHttpLog.Err("data is err"); }finally{ if(parser != null){ dataHull.setMessage(parser.getMessage()); } } return dataHull ; } private <D> LetvDataHull<T> doPost(LetvHttpBaseParameter<T, D , ?> httpParameter) { LetvBaseParser<T , D> parser = httpParameter.getParser(); String response = ""; LetvDataHull<T> dataHull = new LetvDataHull<T>(); try { LetvHttpJavaHandler handler = new LetvHttpJavaHandler() ; response = handler.doPost(httpParameter); if(parser != null){ dataHull.setDataType(LetvDataHull.DataType.DATA_IS_INTEGRITY); dataHull.setDataEntity(parser.initialParse(response)); dataHull.setSourceData(response); LetvHttpLog.Err("complete!"); return dataHull ; }else{ dataHull.setDataType(LetvDataHull.DataType.DATA_PARSER_IS_NULL); LetvHttpLog.Err("Do not have parser"); } } catch (IOException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.CONNECTION_FAIL); LetvHttpLog.Err("connected is fail"); } catch (ParseException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_PARSE_EXCEPTION); LetvHttpLog.Err("parse error"); } catch (DataIsNullException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_IS_NULL); LetvHttpLog.Err("data is null"); } catch (JsonCanNotParseException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_CAN_NOT_PARSE); dataHull.setErrMsg(parser.getErrorMsg()); LetvHttpLog.Err("canParse is false"); } catch (DataIsErrException e) { e.printStackTrace(); dataHull.setDataType(LetvDataHull.DataType.DATA_IS_ERR); LetvHttpLog.Err("data is err"); }finally{ if(parser != null){ dataHull.setMessage(parser.getMessage()); } } return dataHull ; } }