1.入口函数定义
@At("/put")
@Ok("json")
@AdaptBy(type = UploadAdaptor.class, args = { "ioc:uploadAdaptor_rm" })
public Object put(@Param("r") TempFile[] tmpFiles) throws Exception {
}
2.调用
Map<String, Object> param = new HashMap<String, Object>();
param.put("secret", SECRET);
param.put("r", f);//f为一个文件对象
param.put("sign", Lang.md5(HttpClientService.joinParams(param, false, false)));
param.remove("secret");
param.put("timestamp", String.valueOf(System.currentTimeMillis()));
param.put("key", KEY);
//request
Request req = Request.create(RM_URL + "/r/put" ,Request.METHOD.POST);
req.getParams().putAll(param);
Sender sender = Sender.create(req);
sender.setTimeout(30 * 1000);
Response resp = sender.send();
2.1 当 param.put("r", f)时, 入口函数的request.getParameterMap()为空
2.2 当不传文件时,request.getParameterMap()能正常接收key,sign等参数
2.3 入口函数显示声明这些参数,可以正常接收
public Object put(@Param("r") TempFile[] tmpFiles, String key, String sign, String timestamp) throws Exception {
//这里能接收到所有参数
}
3.因为这个入口函数需要使用filter获取这些参数来完成验证,不想改成显示声明的方式,有什么办法来do it