如果请求方式是http+post+xml, 有没有办法映射为请求对象?
小树鹿鸣
2012-07-22
比如现在请求方式是http + post +xml, 请求内容体直接post一个XML数据,例如:
<root> <appkey>123</appkey> <username>abc</username> <password>1234</password> <methodname>user.add</methodname> ......... <root> 有没有办法直接映射为请求ropRequest对象,pring mvc内置的转换器,是基于key-value转换,求楼主帮忙解决啊? |
|
EricLiang
2012-07-23
你可以用xstream将XML转换成JAVA对象,后面的调用都一样了
|
|
小树鹿鸣
2012-07-24
这样子的话,真不如直接调用框架实现的converter,框架的测试用例就写好了。
|
|
stamen
2012-07-26
可以啊,已经支持了,参见rop-sample的例子:
@Test public void testServiceXmlRequestAttr() { RestTemplate restTemplate = new RestTemplate(); MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>(); form.add("method", "user.add");//<--指定方法名称 form.add("appKey", "00001"); form.add("v", "1.0"); form.add("sessionId", "mockSessionId1"); form.add("userName", "tomson"); form.add("salary", "2,500.00"); //address会正确绑定 form.add("address", "<address zoneCode=\"0001\" doorCode=\"002\">\n" + " <streets>\n" + " <street no=\"001\" name=\"street1\"/>\n" + " <street no=\"002\" name=\"street2\"/>\n" + " </streets>\n" + "</address>"); //对请求参数列表进行签名 String sign = RopUtils.sign(form.toSingleValueMap(), "abcdeabcdeabcdeabcdeabcde"); form.add("sign", sign); String response = restTemplate.postForObject( SERVER_URL, form, String.class); System.out.println("response:\n" + response); assertTrue(response.indexOf("<createUserResponse createTime=\"20120101010101\" userId=\"1\">") > -1); } 这儿,address参数就是一个XML,它会自动绑定到: public class CreateUserRequest extends AbstractRopRequest { @Pattern(regexp = "\\w{4,30}") private String userName; @IgnoreSign @Pattern(regexp = "\\w{6,30}") private String password; @DecimalMin("1000.00") @DecimalMax("100000.00") @NumberFormat(pattern = "#,###.##") private long salary; @Valid private Address address; private String format; private Telephone telephone; } 的Address成员变量中,注意Address一定要打上@Valid标签哦。 |
|
小树鹿鸣
2012-07-30
@stamen, 你还没理解我的意思,我是指post body 就是XML数据,如下所示:
<root> <appkey>123</appkey> <method>abc</method> <sessionId>1234</sessionId> <v>user.add</v> ......... <root> 有没有办法,直接绑定到对像中去? |
|
stamen
2012-07-31
小树鹿鸣 写道 @stamen, 你还没理解我的意思,我是指post body 就是XML数据,如下所示:
<root> <appkey>123</appkey> <method>abc</method> <sessionId>1234</sessionId> <v>user.add</v> ......... <root> 有没有办法,直接绑定到对像中去? 这个暂时不支持,建议使用HTTP参数的方式。 |