A新绝版
2014-08-15
用的是Spring MVC 框架整合ROP JUnit能把rop跑成功,但是换成Spring REST构建的时候就报错。签名用的是ROPUtils.sign方法,代码如下:
RestTemplate restTemplate = new RestTemplate();
MultiValueMap form = new LinkedMultiValueMap();
//指定服务名
form.add("method", "user.getSession");
form.add("appKey", "00001");
//
//中预定义了两个appKey,服务端可通过实现AppSecretManager
//定义自己的appKey管理策略。
form.add("v", "1.0");
form.add("sessionId", "SeesionID");//真实系统时,必须是真正的sessionId.
form.add("format", "xml");
form.add("locale", "en");
form.add("userName", "tomson");
form.add("password", "123456");
//对请求参数进行签名,对于"00001" appKey的密钥是"abcdeabcdeabcdeabcdeabcde"
String sign = RopUtils.sign(form.toSingleValueMap(),new ArrayList( form.keySet()), "abcdeabcdeabcdeabcdeabcde");
form.add("sign", sign);
//发送请求,调用服务
String response = restTemplate.postForObject("http://localhost:8080/rop/router", form, String.class);
System.out.println("response:\n" + response);
Tomcat打印:
ERROR com.rop.security.DefaultSecurityManager - 00001的签名不合法,请检查
控制台输出:
response:
Invalid Signature
Signature is invalid, please press the right to request the algorithm of data signature:SHA1(<secret> <paramName1><paramValue><secret>), attention parameter list in alphabetical order