我正在尝试发送字符串的JSON数组并在服务器端执行某些任务。 这是我的JS:
var x = ["Salam","Saghol","11"]
$.ajax({
url: '../rest/group/addusers',
type: 'POST',
data: JSON.stringify(x),
contentType: 'application/json',
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}
});
我的Java方法:
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/addusers")
public Response addUsersToGroup(List<String> users) {
System.out.println(users);
return Response.status(Response.Status.OK).entity("Salam").build();
}
当我发送请求时,我得到&#34; 415(不支持的媒体类型)&#34;错误信息。
请帮我把数组元素(字符串)传递给下面的方法。
提前致谢。
P.S。这是我的标题:
答案 0 :(得分:1)
这里的问题是&#34;用户&#34; 参数无法反序列化。虽然我的想法可能很清楚,但逻辑上的编程并不正确。
通常使用查询参数提取POST中的数据(使用&#34; =&#34;,&#34;?&#34;,&#34;&amp;&#34;作为分隔符)。在我的情况下,我将数据直接放到POST输出流。以字符串表示形式获取所有数据更合乎逻辑。
所以我将代码更改为:
@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/addusers")
public Response addUsersToGroup(String users) throws IOException {
ObjectMapper mapper = new ObjectMapper();
List<String> l = mapper.readValue(users, List.class);
for (String s : l) {
System.out.println("Item: "+s);
}
return Response.status(Response.Status.OK).entity("Salam").build();
}
问题解决了。谢谢你的关注。