我是使用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
答案 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
方法上传递的内容类型相匹配。