2013-08-07 173 views
0

我正在尝试从浏览器做一个简单的发布请求,并且415 Unsupported Media显示在浏览器的控制台中,它在控制台中也表示Typetext/html,也许我是mising这里有一些愚蠢的事情,但我认真地做了一个android客户端的post请求,一切都在服务器端找到,所以我猜(因为我不熟悉js)这是一个javascript问题,我在这里,这里是的代码所需要的部分:Ajax向Jax-rs服务发送请求

AJAX(这个函数被调用send,它做一些事情之前创建的JSON,这部分它的确定和测试中,JSON是被成功genereated):

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

我如何调用JavaScript的HTML表单:

<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,所以我不需要添加球衣的依赖关系,我也尝试glashfish 3.1,仍然会得到相同的HTTP错误。

EDIT 2:标题:

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

回答

0

您可以添加球衣依赖性:

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

应该可以解决问题乌尔

0

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

+0

我做到了这一点,但它没有工作,我也尝试设置一些参数在头像像这样的答案在这里http://stackoverflow.com/questions/11492325/post-json-fails-with-415-unsupported -media-type-spring-3-mvc但它没有解决问题,我需要一个实体包装或什么? – JosephChilberry

+0

你可以尝试打开LoggingFilter(如本答案http://stackoverflow.com/a/18033725/290799中的“编辑1”中所述),并与我们共享请求的标题? –

+0

现在编辑头,我不知道如何使我的maven Jax-rs项目产生web.xml,我真的不想手动添加它。 – JosephChilberry