当我们发送BAD请求状态作为输出时,可靠的APi输出从JSON更改为XML

时间:2018-07-26 20:57:11

标签: java rest soapui postman restful-architecture

我制作了一个宁静的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>

如果您需要其他任何信息,请告诉我。

0 个答案:

没有答案