使用JAX-RS Jersey服务使用Cookie和JSON

时间:2015-04-10 11:37:10

标签: java rest cookies jersey jax-rs

我使用jQuery代码和方法POST:

将这些数据发送到Restful Web Service(Jersey)
var dataString = {"id":1,"status":"passed","session":"nothing"};
$.post("https://localhost:8443/pv01/ws/user/cookie", dataString);

有了这些数据,我发送了一个cookie。 te cookie中的数据来自外部API。

我面临的问题是如何一起接收cookie值和dataString。

这是我读取Cookie的Java代码:

@POST
@Path("cookie")    
public String cookie(@CookieParam("L14c") String str) {        
    Logger.getLogger(Main.class.getName()).log(Level.INFO, "message : " + str );
    return str;
}

对于数据,我可以这样做:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("cookie")
public String cookie(DataString dataString) {        
    Logger.getLogger(Main.class.getName()).log(Level.INFO, "message : " + dataString );
    return "ok";
}

但是当我将两种方法结合起来接受cookie和JSON dataString时,我得到了错误415,不支持的媒体类型!

我试图查看HTTP标头,但我只能访问cookie。

1 个答案:

答案 0 :(得分:1)

问题在于jQuery请求。看起来Content-Type默认为application/x-www-form-urlencoded。您应该使用像Firebug这样的浏览器调试器。更容易发现这些事情。

从我测试的内容来看,它应该与

类似
$.ajax({
    url: theUrl,
    type: "POST",
    data: JSON.stringify(dataString),
    dataType: "json",
    contentType: "application/json",
    success: function(response) {
        alert(JSON.stringify(response));
    }
});