XMl 请求 returns 错误的请求响应,其中 json 请求有效

XMl Request returns bad request response where as json request works

可以使用 XML 和 JSON 的 REST 服务。 JSON 输入工作正常。 XML 请求 return 错误请求错误。可以做什么来接受XML请求。

这是一个旧项目,使用 spring 3 & jdk 6

@RequestMapping(value = URIConstants.EST, method = RequestMethod.POST ,  consumes={"application/json", "application/xml"}, produces={"application/xml","application/json"})      
    public @ResponseBody ResponseEntity<?> getMasEstablishments(@RequestBody EstDto msaEstRequestDto) throws MasterException {

    }

这是用于映射输入的 dto。
//EstDto

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class EstDto implements Serializable {
    private long regionCode;
    private String medicalReportYN;

    }

这些是 pom.xml 中与映射相关的少数条目

Pom.xml
-----------

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.7.1</version>
</dependency> 

在将输入作为 json 传递时,服务 return 的结果符合预期

根据 XML 请求

<?xml version="1.0" encoding="UTF-8"?>
<root>

   <medicalReportYN>N</medicalReportYN>
   <regionCode>50001</regionCode>
</root>

错误XML响应

<HTML>
    <HEAD>
        <TITLE>Error 400--Bad Request</TITLE>
    </HEAD>
    ---------------------------

     <P>
                                <FONT FACE="Courier New">The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.</FONT>
                            </P>
                        </FONT>
                    </TD>
                </TR>
            </TABLE>
        </BODY>
    </HTML>

如果您需要更多详细信息,请告诉我。 它适用于 JSON 数据的现有配置。要使其适用于 XML 输入需要添加哪些更改?

我认为您需要 XML 来使用 <estDto> 的根元素,而不是名为 "root".

的元素

(要么那样,要么将注释更改为 @XmlRootElement(name="root"),但其他命名更正常和清晰。)