我制作了一个宁静的API,可生成JSON格式的输出(@Produces(MediaType.APPLICATION_JSON))。状态为“创建”或“确定”时,此功能按预期工作。但是每当我以JSON格式发送输出错误请求和一些错误消息时。使用邮递员进行测试时,我没有收到带有错误消息的预期JSON结果,而是收到类似“意外的'B'”之类的消息。如果我使用soapui进行测试,则会在Xml中产生结果。
这些是我在方法中使用的注释
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("sample")
这些是我根据请求发送的回复
return Response
.status(Status.BAD_REQUEST)
.type(MediaType.APPLICATION_JSON)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", " POST")
.entity(JsonResponse)
.build();
return Response
.status(Status.UNAUTHORIZED)
.type(MediaType.APPLICATION_JSON)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", " POST")
.entity(JsonResponse)
.build();
return Response
.status(Status.CREATED)
.type(MediaType.APPLICATION_JSON)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "POST")
.entity(JsonResponse)
.build();
仅当返回类型为“创建的状态”以外,我才有问题。
这是我的对象映射器类
private static final ObjectMapper MAPPER = new ObjectMapper();
static
{
MAPPER.setSerializationInclusion(Include.ALWAYS);
MAPPER.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
MAPPER.configure(SerializationFeature.WRAP_ROOT_VALUE, true); //in response
MAPPER.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);//in request
}
public ObjectMapperProvider()
{
System.out.println("Instantiate ObjectMapperProvider");
}
@Override
public ObjectMapper getContext(Class<?> arg0)
{
return MAPPER;
}
I have used following response type in postman
This is the result I got for above request. Im expecting a json format output
This result im seeing in soapUi in XML format
This result im seeing in SoapUi in json format
这是我以XML格式发送带有错误消息的401状态代码但以JSON格式发送时我看到的响应。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>401 - Unauthorized: Access is denied due to invalid credentials.
</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica,
sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-
family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-
top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header">
<h1>Server Error</h1>
</div>
<div id="content">
<div class="content-container">
<fieldset>
<h2>401 - Unauthorized: Access is denied due to invalid
credentials.</h2>
<h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>
</fieldset>
</div>
</div>
</body>
</html>
如果您需要其他任何信息,请告诉我。