我将Binary类型的对象存储在数据库中,我有一个JAX-RS Web服务,可以通过它们的ID检索它们。
public class Binary {
private InputStream data;
private String id;
private String name;
private String description;
... // constructors/getters/setters
}
我能够使用此代码:
@GET
@Path("{id}")
@Produces(MediaType.MULTIPART_FORM_DATA)
Response getBinary(@PathParam("id") String id) {
Binary binary = ... // get binary from database
FormDataMultiPart multipart = new FormDataMultiPart();
multipart.field("name", binary.getName());
multipart.field("description", binary.getDescription());
multipart.field("data", app.getData(),
MediaType.APPLICATION_OCTET_STREAM_TYPE);
return multipart;
}
我不喜欢在FormDataMultiPart中包装值并在客户端代码中解包它们。我想直接返回Binary对象,如下所示:
@GET
@Path("{id}")
@Produces(/* ? */)
Binary getBinary(@PathParam("id") String id) {
Binary binary = ... // get binary from database
return binary;
}
由于InputStream参数,我无法使用XML或JSON表示。 我很感激如何处理这个问题的任何帮助。谢谢!
答案 0 :(得分:2)
如果您将数据作为InputStream,则每次从InputStream读取时都必须重置。最好把它作为byte []。
如果您使用的是jackson,则可以返回:
Picasso.with(context)
.load(marker.getSnippet())
.placeholder(R.drawable.ic_placeholder)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
if (currentClickedMarker != null && currentClickedMarker.isInfoWindowShown()) {
//toggle the marker's infoWindow
currentClickedMarker.hideInfoWindow();
currentClickedMarker.showInfoWindow();
}
}
@Override
public void onError() {
}
});
您可以使用以下方式进行测试:
@GET
@Path("{id}")
@Produces(/* ? */)
public Response get(String documentId) {
Binary binary = ... // get binary from database
return Response.ok(binary).build();
}