gpt4 book ai didi

Java:在REST服务中传递二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:34 25 4
gpt4 key购买 nike

我正在编写一个小型 Java REST 程序。我可以传递一维数组,但不能传递二维数组作为参数。下面的代码使用 Spring Boot。

服务器代码:

@RequestMapping("/char2")
public String hello(char[][] c) {
return "hello "+c[0][1];
}

@RequestMapping("/char")
public String helloInt(char[] c) {
return "hello "+c[1];
}

客户端代码:

// this works fine
MultiValueMap<String, char[]> map = new LinkedMultiValueMap<String, char[]>();
map.add("c", new char[] {'b','c'});
String s = restTemplate.postForObject("http://localhost:8080/char", map, String.class);
System.out.println(s);

// this does not work
MultiValueMap<String, char[][]> map2 = new LinkedMultiValueMap<String, char[][]>();
map2.add("c", new char[][] {{'a','b'},{'c','d'}});
String s2 = restTemplate.postForObject("http://localhost:8080/char2", map2, String.class);
System.out.println(s2);

客户端错误消息:

Caused by: org.springframework.web.client.HttpServerErrorException: 500 null
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:97) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:730) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:688) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:644) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:399) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at hello.Application.lambda$0(Application.java:40) [classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:818) [spring-boot-2.0.5.RELEASE.jar:2.0.5.RELEASE]
... 5 common frames omitted

服务器端错误消息:

java.lang.NoSuchMethodException: [[C.<init>()
at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_161]
at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_161]
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:208) ~[spring-web-5.0.9.RELEASE.jar:5.0.9.RELEASE]
at

最佳答案

您正在传递一个映射,而不是映射中包含的数组。尝试按如下方式更改休息通话:

String s = restTemplate.postForObject("http://localhost:8080/char", map.get("c"), String.class);

String s2 = restTemplate.postForObject("http://localhost:8080/char2", map2.get("c"), String.class);

关于Java:在REST服务中传递二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com