代码提取地址:http://dl.django.t.taobao.com/rest/1.0/file?fileIds=T7wPauRwTGuLA2WtMhk6ZwAAAB8AAQED&name=sdk%E5%8F%8AAPI%E7%A4%BA%E4%BE%8B.zip
下载文件:sdk及API示例.zip
类文件名 | 说明 |
---|---|
DataPullSdkServlet.java | 实现基类 |
DataPullAesServlet.java | 加密模式代码示例 |
DataPullSignServlet.java | 签名模式代码示例 |
PullDataAesTest.java | 加密模式,模拟测试代码 |
PullDataSignTest.java | 签名模式,模拟测试代码 |
下面的测试范例是安全(密文)模式:
/** * 加密请求示例 * */ public class DataPullAesServlet extends DataPullSdkServlet { protected Map<String, String> getParam(HttpServletRequest req) { String k = req.getParameter(RequestConstants.k); String data = req.getParameter(RequestConstants.data); if (StringUtils.isEmpty(data)) { throw new IllegalArgumentException("data can not be null!"); } // 加密签名模式 Map<String, String> bizMap = YunosDataUtil.getYunosData(AES_KEY, data, k); return bizMap; } protected String buildResponseString(HttpServletRequest req, BaseResponse response){ String k = req.getParameter(RequestConstants.k); String text = YunosDataUtil.encryptReturnData(AES_KEY, k, response); return text; } } /** * data pull 示例 * */ public abstract class DataPullSdkServlet extends HttpServlet { protected final static String SIGN_KEY = "xxxxx" ;//签名key,同服务器配置界面上配置 protected final static String AES_KEY = "yyyyy" ;//加密秘钥,同服务器配置界面上配置 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /** 获取请求参数 **/ Map<String, String> bizMap = getParam(req); /** 签名验证 **/ checkSign(bizMap); /** 组装数据部分 **/ BaseResponse response = buildMetaResponse(bizMap); /** 设置traceId,方便问题跟踪 **/ response.setTraceId(bizMap.get(RequestConstants.traceId)); /** 生成真实的返回数据 **/ String responseString = buildResponseString(req, response); /** 输出 **/ this.responseOutWithJson(resp, responseString); } abstract Map<String, String> getParam(HttpServletRequest req) ; private void checkSign(Map<String, String> bizMap ){ boolean res = YunosDataUtil.checkYunosData(bizMap, SIGN_KEY); if(!res){ throw new IllegalAccessError(""); } return; } abstract String buildResponseString(HttpServletRequest req, BaseResponse response); public BaseResponse buildMetaResponse(Map<String, String> bizMap) { MetaResponse response = new MetaResponse(); try { response.setCode(200); response.setMsg("success"); response.setSign("xxx"); /** 组装数据部分 **/ List<DataModel> modelList = buildModelList(); String dataListJson = JacksonUtil.toJson(modelList) ; response.setJsonModel(dataListJson); /** 添加数据内容签名 **/ response.setSign(YunosDataUtil.getResponseDataSign(dataListJson, SIGN_KEY)); } catch (Exception e) { return ResponseUtils.buildFailed(response, ResponseCode.SYS_ERROR); } return response; } /** * 按照META格式组装数据 * TODO * @param response */ public List<DataModel> buildModelList(){ DataModel model = new DataModel() ; model.setId("id_test"); model.setField("title", "title_1"); List<DataModel> modelList = new ArrayList<DataModel>(); modelList.add(model); return modelList; } /** * 以JSON格式输出 * * @param response */ protected void responseOutWithJson(HttpServletResponse response, String jsonObj) { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); PrintWriter out = null; try { out = response.getWriter(); out.append(jsonObj); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { out.close(); } } } }