【发布时间】:2018-03-12 00:27:18
【问题描述】:
我正在向我的 springboot 应用程序发布一个 xml 并将其接收到 Pojo Jaxb 并返回一个响应。我能够成功地做到这一点,但是如果我使用命名空间传递 xml,我得到的响应代码为 406,响应正文为无内容。我尝试了各种方法在我的 Pojo 中添加命名空间,甚至尝试在 package-info 中添加它,但我无法找到让它工作的方法,请指教。下面是一个没有命名空间的简单 xml 的工作示例
Pojo Employee.java
@XmlRootElement(name = "Employee")
public class Employee {
private int id;
private String name;
private float salary;
public Employee() {}
public Employee(int id, String name, float salary) {
super();
this.id = id;
this.name = name;
this.salary = salary;
}
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement //(namespace="http://www.example.org/property")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}
下面是我的 Controller 方法,它通过 POJO 从 xml 中获取值
@RequestMapping(value = { "/myURL" }, method = RequestMethod.POST, consumes = { "application/xml" })
public ResponseEntity<?> postMethodXMLreturnXML(@RequestBody Employee list) {
try {
Employee FirstValue=list;
System.out.println("SOP : post Method started . Name " + FirstValue.getName());
return new ResponseEntity<Object>(Employee , HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
return (new ResponseEntity<String>(ErrorCodes.SERVER_ERROR.getDescription(),
HttpStatus.INTERNAL_SERVER_ERROR));
}
}
以下是我发布到此的 xml,并通过有效的响应代码和响应消息获得所需的输出
输入帖子xml
<?xml version="1.0"?>
<Employee>
<id>1</id>
<name>myName</name>
<salary>1.1</salary>
</Employee>
但是我现在想在 xml 下面传递,当我在 xml 下面传递给这段代码时,我得到响应代码 406 并且没有内容,尝试在 pojo 中添加命名空间,甚至尝试将代码添加到包信息中,请指教 在此先感谢
<?xml version="1.0"?>
<Employee>
<myns:id>1</myns:id>
<myns:name>myName</myns:name>
<myns:salary>1.1</myns:salary>
</Employee>
【问题讨论】:
-
您只在开始标签中使用命名空间。结束标签没有。
-
收盘也有,更新了...
-
附上客户端代码。
-
使用swagger进行测试
标签: java xml spring-boot namespaces jaxb