Java 对Jax-rs服务的Ajax Post请求
我正试图从浏览器中发出一个简单的post请求,浏览器控制台中显示了Java 对Jax-rs服务的Ajax Post请求,java,javascript,html,jquery,jax-rs,Java,Javascript,Html,Jquery,Jax Rs,我正试图从浏览器中发出一个简单的post请求,浏览器控制台中显示了415个不受支持的媒体,控制台上也显示了类型是text/html,也许我在这里误解了一些愚蠢的事情,但说真的,我是在从android客户端发出post请求,服务器端可以找到一切,所以我想(因为我不熟悉js),这是我在这里遇到的javascript问题,下面是代码中感兴趣的部分: ajax(此函数称为send,它在创建json之前做了一些事情,这一部分还可以,并且经过测试,json正在成功生成): 如何以HTML形式调用javasc
415个不受支持的媒体
,控制台上也显示了类型
是text/html
,也许我在这里误解了一些愚蠢的事情,但说真的,我是在从android客户端发出post请求,服务器端可以找到一切,所以我想(因为我不熟悉js),这是我在这里遇到的javascript问题,下面是代码中感兴趣的部分:
ajax(此函数称为send
,它在创建json之前做了一些事情,这一部分还可以,并且经过测试,json正在成功生成):
如何以HTML形式调用javascript:
<form action="javascript:send()" method="post">
Edit:
由于@adrianplattner的回答,我使用的是glassfish 4.0
,所以我不需要添加jersey的依赖项,我也尝试了glashfish 3.1
,但仍然得到相同的HTTP错误
编辑2:
标题:
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
您可以添加jersey依赖项:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>
泽西岛
泽西json
1.11
这应该可以解决您的问题jQuery.ajax()调用的默认内容类型是
application/x-www-form-urlencoded;charset=UTF-8
(请参阅),但您希望在JAX-RS资源中使用application/json
。设置调用的contentType
参数为application/json
我这样做了,但没有效果,我也尝试在标题中设置一些参数,比如theon在这里的回答,但没有解决问题,我需要实体包装还是什么?你能尝试打开LoggingFilter吗(如本回答中EDIT 1
所述)并与我们共享请求的标题?现在使用标题编辑,我不知道如何使我的maven Jax rs项目生成web.xml,我真的不想手动添加它。您不需要创建web.xml
,有3种方法可以注册LoggingFilter(所有这些都在链接中进行了描述)。我对服务器上的标题很好奇,这些标题被记录到服务器日志中(当LoggingFilter启用时)。我在配置类中添加了“@XmlRootElement”,它给了我一个错误的请求错误,没有XmlRoo…t提示,我成功地从Android客户端发出了post请求。
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.11</version>
</dependency>