我有一个简单的 jersey (java) 休息服务器,带有使用 jquery 的 Web 界面。我有一个用于 GET 和 POST 模式的 REST 服务。POST 调用不起作用,它在输入数据端有一个 json 对象并返回一个 json 数据。
异常消息:
A message body reader for Java class ....RESTTaskDataInput, and Java type class ....RESTTaskDataInput, and MIME media type application/x-www-form-urlencoded; charset=UTF-8 was not found.
The registered message body readers compatible with the MIME media type are:
application/x-www-form-urlencoded; charset=UTF-8 ->
com.sun.jersey.core.impl.provider.entity.FormProvider...
用于后调用的 Jquery 代码(单击按钮进行调用):
$("#task-launcher-post").click(function()
{
$("div#result").text("");
$.ajax({
type: "POST",
url: "resources/foo", <= This is OK, the rest interface is under that
data: {
code: "1234",
email: "my@email.com"
},
dataType: "json",
success: function(result)
{
$("div#result").append('...');
},
error: function(xml,result)
{
$("div#result").append('...');
}
});
});
Java REST 服务代码
@Path("/foo")
public class RESTSERVICECrawler
{
...
@POST
@Consumes("application/json")
@Produces("application/json")
public RESTLaunchResult launch(RESTTaskDataInput input)
{
RESTLaunchResult result = new RESTLaunchResult();
...
return result;
}
}
Java RESTTaskDataInput 代码(输入端使用的数据)
@XmlRootElement
public class RESTTaskDataInput
{
public String code;
public String email;
}
GET 调用适用于 url 参数,但 POST 不适用于输入中的 json。我不知道为什么,我阅读了 ajax 的 jquery 文档,我认为 rest 服务器无法理解 json 输入数据。