在REST服务中返回XML响应

时间:2009-08-05 12:20:32

标签: java rest cxfrs

我正在编写一个RESTful Web服务,我希望返回一个包含一些结果集的XML。我使用了XSTREAM并将对象解析为XML字符串。由于我需要返回此字符串,因此我需要知道如何将其传递回调用客户端。

一种方法是将RESPONSE返回给调用客户端。我的示例代码显示了我正在尝试做的事情。

@Path("somepath")
public class ClassToReturnXML
{
    public Response methodToReturnXML()
    {

       ResponseBuilder builder = new ResponseBuilderImpl();
       builder.type(MediaType.TEXT_XML);
       builder.entity(myXMLString);
       return builder.build();
    }
}

不幸的是它没有返回实体,虽然状态代码是200.我是否错误地实例化了ResponseBuilder?我还看到了应该如下实例化的地方:

ResponseBuilder builder = Response.status(200);

请建议在响应中返回XML的合适方法是什么。

我正在使用APACHE CXF进行RESTFUL服务。 (版本2.2.3 - 我猜):D 在此先感谢您的所有帮助。

2 个答案:

答案 0 :(得分:9)

这只是一个清洁问题。它最终奏效了。我最终以下列方式创建了响应。

Response response = Response.status(200).type(MediaType.TEXT_XML).entity(xmlString).build();

它运作得很好。我希望它有所帮助。

答案 1 :(得分:2)

HTTP响应是否具有正确的内容类型标头,以确定它是Xml,即text/xml还是application\xml?结帐The Proper Content Type for XML Feeds

响应状态200只是标准HTTP Response Codes之一,表示请求已成功,因此只有在这种情况下才会返回。