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")
,但其他命名更正常和清晰。)
可以使用 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")
,但其他命名更正常和清晰。)