springboot rest controller with xml payload

时间:2017-08-29 13:33:39

标签: java spring-boot spring-restcontroller

我正在使用Spring boot rest controller使用application / xml数据类型创建一个rest服务。发送嵌套的xml时,它无法解析它。它甚至可能吗?或者我应该继续编写一个新的肥皂界面。

请求有效负载

<requestData>
    <jvmCount>16</jvmCount>
    <maxAttampts>345</maxAttampts>
    <locationXpath>abd/adfd/bdc</locationXpath>
    <requestPayload>
            <userdetails>
        //variabe user data with different xml structure
            </userdetails>  
    </requestPayload>
</requestData>

控制器

@PostMapping(value = "/soap", consumes=MediaType.APPLICATION_XML_VALUE, 
    produces=MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public ResponseEntity<?> soapServiceClient(@Valid @RequestBody RequestData requestData, Errors errors) throws InterruptedException{
    logger.info(" ==== soapServiceClient - started"+requestData);
}

RequestData pojo

@XmlRootElement
public class RequestData{
    private int jvmCount;
    private String locationXpath;
    private int maxAttampts;
    private String requestPayload;
}

异常

  

2017-08-29 18:54:41.667 WARN 13776 --- [nio-8181-exec-1] .wsmsDefaultHandlerExceptionResolver:由Handler执行导致的已解决异常:org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法从START_OBJECT标记中反序列化java.lang.String的实例;嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:无法从START_OBJECT标记中反序列化java.lang.String的实例

1 个答案:

答案 0 :(得分:1)

您的应用在解析传入的XML时遇到问题,因为它认为它是JSON。 也许添加以下内容会有所帮助:

<groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

如果没有,您可以查看类似的问题here