代码提取地址: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();
}
}
}
}