我正在使用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的实例
答案 0 :(得分:1)
您的应用在解析传入的XML时遇到问题,因为它认为它是JSON。 也许添加以下内容会有所帮助:
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
如果没有,您可以查看类似的问题here。