获取REST请求的XML和实体

问题描述 投票:0回答:1

我有一个具有这种方法的Java REST Web服务:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
@Path("/send")
public Response sendStuff(Stuff stuff) {
    // do magic with stuff
    return Response.ok("OK.").build();
}

出于调试目的,我希望将发送的XML附加发送到Stuff

现在,我可以手动封送发送对象。然后,我将得到一个完全不同的XML,可能缺少一些元素或属性。

或者我可以自己注入XML并对其进行解析,但这有点钝,而且我可能会错过诸如拦截器之类的Web服务功能。

是否有更好的方法从JAX-RS Web服务中同时获取XML和Java实体?

javascript jax-rs
1个回答
0
投票

由于似乎没有正确的方法,我决定采用此方法:

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
@Path("/send")
public Response sendStuff(String xml) {
    Stuff stuff;

    try (ByteArrayInputStream inputXml = new ByteArrayInputStream(xml.getBytes(Charset.defaultCharset()))) {
        final JAXBContext context = JAXBContext.newInstance(Stuff.class);
        request = (Stuff) context.createUnmarshaller().unmarshal(inputXml);
    } catch (final JAXBException | IOException e) {
        return Response.status(400, e.getMessage()).build();
    }

    // do magic with stuff
    return Response.ok("OK.").build();
}
© www.soinside.com 2019 - 2024. All rights reserved.