cxf restful return image

时间:2013-09-21 15:15:23

标签: java image rest cxf

我是使用CXF和Spring创建RESTful Web服务的新手。该项目由maven控制。

我有一个Android应用程序,希望连接到服务器检索书籍信息和封面图片通过RESTful Web服务。是否有可能(以及如何)RESTful服务返回图像?

Project Explorer

Project
--Java Resource
----src/main/java
------library.service
--------IBook.java
--------Book.java
----images
------Cover1.png
------Cover2.png
--JavaResources
--Deployed Resources
----webapp
------WEB-INF
----web-resources

IBook.java界面

@GET
@Path("/book/cover/{name}")
@Produces("image/png")
public Image getImage(@PathParam("name") String name);

Book.java impl

public Image getImage(String name){
    //How should I get cover png from 'images' folder and return it??
}

由于

Silvester Pang

1 个答案:

答案 0 :(得分:3)

您可以通过Response.ok(参数...)。build()

返回您选择的图像

将您的IBook.java更改为

    @GET
    @Path("/book/cover/{name}")
    @Produces("image/*")
    public Response getImage(@PathParam("name") String name);

您的实施界面。

public Response getImage(String name){
    File file = new File(fileUrl);
    String mediaType = SomeContentTypeMapHere(file)
    return Response.ok(file,mediaType).build()
}

修改

我们使用Response.ok(Object type, String mediaType).build()构建并在调用方法处理程序时返回Response。 First参数是一个Object。当有人/某人在给定网址上发送请求而mediaType基本上是我们要去的内容类型(例如,“image / png,image / jpg等)时,我们会认为它是我们要发送的东西发送。

请务必将@Produces("image/*")与您在ok(Object entity, String mediaType方法上传递的内容类型相匹配。