java – 如何使用Spring RestTemplate发送数组?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何使用Spring RestTemplate发送数组?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2125字,纯文字阅读大概需要4分钟。
内容图文
![java – 如何使用Spring RestTemplate发送数组?](/upload/InfoBanner/zyjiaocheng/758/e8103b59b9914718b44ba274dd08a4a1.jpg)
如何使用Spring RestTemplate发送数组参数?
这是服务器端实现:
@RequestMapping(value = "/train", method = RequestMethod.GET)
@ResponseBody
public TrainResponse train(Locale locale, Model model, HttpServletRequest request,
@RequestParam String category,
@RequestParam(required = false, value = "positiveDocId[]") String[] positiveDocId,
@RequestParam(required = false, value = "negativeDocId[]") String[] negativeDocId)
{
...
}
这就是我尝试过的:
Map<String, Object> map = new HashMap<String, Object>();
map.put("category", parameters.getName());
map.put("positiveDocId[]", positiveDocs); // positiveDocs is String array
map.put("negativeDocId[]", negativeDocs); // negativeDocs is String array
TrainResponse response = restTemplate.getForObject("http://localhost:8080/admin/train?category={category}&positiveDocId[]={positiveDocId[]}&negativeDocId[]={negativeDocId[]}", TrainResponse.class, map);
以下是实际的请求URL,这显然是不正确的:
http://localhost:8080/admin/train?category=spam&positiveDocId%5B%5D=%5BLjava.lang.String;@4df2868&negativeDocId%5B%5D=%5BLjava.lang.String;@56d5c657`
一直试图搜索但无法找到解决方案.任何指针将不胜感激.
解决方法:
Spring的UriComponentsBuilder可以实现这一功能并允许进行Variable扩展.假设您要将一个字符串数组作为参数“attr”传递给您只有一个带路径变量的URI的资源:
UriComponents comp = UriComponentsBuilder.fromHttpUrl(
"http:/www.example.com/widgets/{widgetId}").queryParam("attr", "width",
"height").build();
UriComponents expanded = comp.expand(12);
assertEquals("http:/www.example.com/widgets/12?attr=width&attr=height",
expanded.toString());
否则,如果您需要定义一个应该在运行时扩展的URI,并且您事先不知道数组的大小,请使用带有{?key *}占位符的http://tools.ietf.org/html/rfc6570 UriTemplate,并使用UriTemplate类展开它. https://github.com/damnhandy/Handy-URI-Templates.
UriTemplate template = UriTemplate.fromTemplate(
"http://example.com/widgets/{widgetId}{?attr*}");
template.set("attr", Arrays.asList(1, 2, 3));
String expanded = template.expand();
assertEquals("http://example.com/widgets/?attr=1&attr=2&attr=3",
expanded);
对于Java以外的语言,请参阅https://code.google.com/p/uri-templates/wiki/Implementations.
内容总结
以上是互联网集市为您收集整理的java – 如何使用Spring RestTemplate发送数组?全部内容,希望文章能够帮你解决java – 如何使用Spring RestTemplate发送数组?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。