Ajax向Jax-rs服务发送请求
问题描述:
我正在尝试从浏览器做一个简单的发布请求,并且415 Unsupported Media
显示在浏览器的控制台中,它在控制台中也表示Type
是text/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'
},
答
您可以添加球衣依赖性:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
应该可以解决问题乌尔
答
默认jQuery.ajax()调用application/x-www-form-urlencoded; charset=UTF-8
的Content-Type
(见documentation ),但您期望在您的JAX-RS资源中使用application/json
。将您呼叫的contentType
参数设置为application/json
。
我做到了这一点,但它没有工作,我也尝试设置一些参数在头像像这样的答案在这里http://stackoverflow.com/questions/11492325/post-json-fails-with-415-unsupported -media-type-spring-3-mvc但它没有解决问题,我需要一个实体包装或什么? – JosephChilberry
你可以尝试打开LoggingFilter(如本答案http://stackoverflow.com/a/18033725/290799中的“编辑1”中所述),并与我们共享请求的标题? –
现在编辑头,我不知道如何使我的maven Jax-rs项目产生web.xml,我真的不想手动添加它。 – JosephChilberry