使用 text/xml 获取 http 415,不支持的媒体类型
getting http 415, Unsupported Media Type using text/xml
我有一个球衣端点 (JAX-RS),我正试图用 text/xml 请求访问它。我收到了一个 http 415,但我不明白为什么。这是信息。有任何想法吗?谢谢
@Path("/bid")
@Produces("text/xml;charset=ISO-8859-1")
@Consumes({"text/xml", "application/xml"})
@Resource
public class BidController {
@RolesAllowed("blah")
@POST
public Response bid(final HttpServletRequest request) {
我正在通过 Postman(REST 客户端)发送 {"Content-Type":"text/xml"}
我的POSTbody绝对是格式正确的xml。
您收到 415 响应,因为 JAX-RS 不知道如何将传入的 XML 转换为 HttpServletRequest
。
如果你真的想要访问请求,那么你需要用@javax.ws.rs.core.Context注释:
@RolesAllowed("blah")
@POST
public Response bid(@Context final HttpServletRequest request) {
然而,正如您所说,您正在用 text/xml
击中它,那么您可能实际上想要:
@POST
public Response bid(final MyRequest request) {
...
}
其中 MyRequest
声明如下:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MyRequest {
@XmlElement
int field1;
@XmlElement
String field2;
...
}
对应 XML 如:
<MyRequest>
<field1>11327</field1>
<field2>some string
</MyRequest>
JAX-RS 规范要求实现能够解码传入 text/xml 并通过 JAXB 编码传出 text/xml。
我有一个球衣端点 (JAX-RS),我正试图用 text/xml 请求访问它。我收到了一个 http 415,但我不明白为什么。这是信息。有任何想法吗?谢谢
@Path("/bid")
@Produces("text/xml;charset=ISO-8859-1")
@Consumes({"text/xml", "application/xml"})
@Resource
public class BidController {
@RolesAllowed("blah")
@POST
public Response bid(final HttpServletRequest request) {
我正在通过 Postman(REST 客户端)发送 {"Content-Type":"text/xml"}
我的POSTbody绝对是格式正确的xml。
您收到 415 响应,因为 JAX-RS 不知道如何将传入的 XML 转换为 HttpServletRequest
。
如果你真的想要访问请求,那么你需要用@javax.ws.rs.core.Context注释:
@RolesAllowed("blah")
@POST
public Response bid(@Context final HttpServletRequest request) {
然而,正如您所说,您正在用 text/xml
击中它,那么您可能实际上想要:
@POST
public Response bid(final MyRequest request) {
...
}
其中 MyRequest
声明如下:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class MyRequest {
@XmlElement
int field1;
@XmlElement
String field2;
...
}
对应 XML 如:
<MyRequest>
<field1>11327</field1>
<field2>some string
</MyRequest>
JAX-RS 规范要求实现能够解码传入 text/xml 并通过 JAXB 编码传出 text/xml。