我的问题是我有一个网络表单,我想将这些数据发送到Jersey restFULL
方法。
在我的Javascript中我有这个电话:
console.log('Sending event creation ---> '+eventInJsonString);
$.ajax({
url: "/Bxip/rest/events/",
// dataType: 'json',
type: 'post',
data: eventInJsonString,
contentType: 'multipart/form-data',
success: function(data) {
console.log("success ", data.response);
},
error: function(data) {
console.log("error ", data.error);
}
});
我的球衣方法是:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_HTML)
//Retornará HTTP_STATUS 204 (on success)
public String addEvent(
@FormParam("title") String title,
@FormParam("fechaInicio") String fechaInicio,
@FormParam("lugar") String lugar,
@FormParam("categoria") String categoria,
@FormParam("description") String description,
@FormParam("fechaFin") String fechaFin) throws IOException {
System.out.println("ENTRAAA = " + title + description);
发送数据前的结果:
Sending event creation ---> {"title":"aaaa","description":" aaaaa","fechaInicio":"bbbb","categoria":"Beber y comer","fechaFin":"forever"}
但是在Java服务器端,参数为null:
ENTRAAA = nullnull
如何从客户端向此球衣方法发送@POST
?
答案 0 :(得分:3)
有几种方法可以做到这一点。这里有两种可能性:
要在泽西岛接收@ FormParam,您应该发送帖子正文中编码的数据网址。
请求的ContentType应为
application/x-www-form-urlencoded
并且eventInJsonString的内容应该是
title=aaaa&description=aaaaa&fechaInicio=bbbb&categoria=Beber y comer&fechaFin=forever
要在Jersey中处理此问题,您应该将@Consumes类型更改为
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
这样你就可以获得@ FormParam了。
问题是您正在尝试在json中发送数据。如果你想以这种方式发送它,你也需要改变一些事情:
您需要将请求ContentType更改为
application/json
在泽西岛,您需要将@Consumes类型更改为
@Consumes(MediaType.APPLICATION_JSON)
如果你这样发送,你还需要从方法中删除@ FormParam:
public String addEvent(String jsonBody) throws IOException {
// Now you need to parse the json to get your parameters...