Ajax Post对Jax-rs服务的请求

时间:2013-08-07 15:47:56

标签: java javascript html jquery jax-rs

我正在尝试从浏览器发出一个简单的帖子请求,并在浏览器的控制台中显示415 Unsupported Media,在控制台中也说明Typetext/html,也许我我在这里愚蠢的东西,但严重的是我正在从Android客户端发出请求,一切都在服务器端找到,所以我猜(因为我不熟悉js)这是我在这里的一个javascript问题,以下是代码感兴趣的部分:

ajax(这个函数叫做send并且它在创建json之前做了一些事情,那部分它没问题并经过测试,json正在成功生成):

$.ajax({
        url: 'webresources/serverConfig/save/',
        type: 'post',
        dataType:'json',
        data: jsonObj
    });

我如何调用HTML表单中的javascript:

<form action="javascript:send()"  method="post">

JAX-rs服务:

@Path("serverConfig/")
public class ConfigurationSaverService {

@POST
    @Path("save/")
    @Consumes(MediaType.APPLICATION_JSON)
    public void save(Configuration configuration){
    //config stuffs here.
}

Edit:由于@ adrianplattner的回答,重要的是说我正在使用glassfish 4.0,所以我不需要添加jersey的依赖项,我也尝试glashfish 3.1仍然得到相同的HTTP错误。

EDIT 2:标题:

 headers: { 
    'Accept': 'application/json',
    'Content-Type': 'application/json' 
},

2 个答案:

答案 0 :(得分:0)

你可以添加泽西依赖:

 <dependency>
     <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-json</artifactId>
     <version>1.11</version>
 </dependency>

应解决您的问题

答案 1 :(得分:0)

jQuery.ajax()调用的默认Content-Typeapplication/x-www-form-urlencoded; charset=UTF-8(请参阅documentation),但您希望在JAX-RS资源中使用application/json。将通话的contentType参数设置为application/json