在REST中下载xml

时间:2015-12-04 13:46:37

标签: java xml rest

我正在尝试开发REST服务,该服务返回XML中的对象列表,由于JAXB注释,所以反对一致。 但我现在正在尝试做的是在调用REST服务时使得返回的列表被下载。 包webService;

@Path( "/WebService" )
public class FeedService {

@GET
@Path( "/GetSequenceId/{id}" )
@Consumes( MediaType.APPLICATION_XML )

// @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response showFileStoreDetails( @PathParam( "id" ) String id)
        throws ArchiveException, IOException {

    // String feeds = null;
    Sequence feedData = null;
    Liststeps listStep = new Liststeps();
    // List<attachement> listAttachementd = null;
    // File file = new File( "file.xml" );
    // Response response = null;
    try {
        /*
         * Database database = new Database(); Connection connection =
         * database.Get_Connection();
         */

        // ProjectManager projectManager = new ProjectManager();

        feedData = listStep.getSteps( Integer.parseInt( id ) );
        // listAttachementd = listStep.getAttachement();
        // StringBuffer sb = new StringBuffer();
        // Gson gson = new Gson();
        // System.out.println( gson.toJson( feedData ) );

        // feeds = gson.toJson( feedData );
        // String xml = org.json.XML.toString(gson);
        // XStream xstream = new XStream();



    } catch ( NumberFormatException e ) {
        System.out.println( e );
    } catch ( Exception e ) {
        e.printStackTrace();
    }

    // response=feeds;

    return Response.status( 200 ).entity( feedData ).build();

  }             
}

2 个答案:

答案 0 :(得分:0)

如果使用@RmlponseBody在控制器中使用@XmlRootElement和返回类型注释结果类,则将成为XML

编辑:也就是说,如果你使用Spring MVC作为REST服务......

答案 1 :(得分:0)

如果您使用的是Jackson或类似的转换,则应将@XmlRootElement添加到对象的顶部 like in this image.

请注意,您正在使用带有GET方法的@Consume,并且可以直接将参数解析为Integer,因此您不需要获取String并解析为整数。即使出现错误,此方法也将始终返回200.

 @GET
 @Path( "/GetSequenceId/{id}" )
 @Produces( MediaType.APPLICATION_XML )
 public Response showFileStoreDetails( @PathParam( "id" )  int id){

   final Sequence feedData =  new Liststesp().getSteps(id);

   if (feedData == null){
       return Response.status( 400 ).entity("some error").build();
   }else{
       return Response.status( 200 ).entity( feedData ).build();
   }
 }