文档中心 > YunOS开放平台

API数据接入JAVA语言明文模式代码范例

更新时间:2017/07/31 访问次数:8913

代码提取地址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 DataPullSignServlet extends DataPullSdkServlet {
	
	protected Map<String, String> getParam(HttpServletRequest req) {
		String data = req.getParameter(RequestConstants.data);
		if (StringUtils.isEmpty(data)) {
			throw new IllegalArgumentException("data can not be null!");
		}
		// 加密签名模式
		Map<String, String>	bizMap = JacksonUtil.fromJsonStrToMap(data);
		return bizMap;
	}
	
	protected String buildResponseString(HttpServletRequest req, BaseResponse response){
		String text = JacksonUtil.toJson(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();
			}
		}
	}
}

FAQ

关于此文档暂时还没有FAQ
返回
顶部