【发布时间】:2013-11-18 19:35:46
【问题描述】:
我正在尝试将一个字节数组从我的 resteasy 客户端发送到另一个服务(也是 resteasy),但我的字节数组在服务器上始终为空。
Resteasy:2.3.6.Final
是的,我在我的类路径中包含了 resteasy-multipart-provider jar。
服务器代码:
public class PhotoServiceInputBean {
private byte[] photo;
public byte[] getPhoto() {
return photo;
}
@FormParam("photo")
@PartType("application/octet-stream")
public void setPhoto(byte[] data) {
this.photo = data;
}
}
@Adapter
@Path("/")
public class PhotoServiceAdapter {
@POST
@Path("/services/{id}/photos")
@Consumes("multipart/form-data")
@Produces(value = {MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN})
public Response createPhoto(@PathParam("id") Long id, @MultipartForm PhotoServiceInputBean inputBean) {
System.out.println(inputBean.getPhoto());
}
}
我的客户代码如下:
@Path("/services/{id}/photos")
public interface CreatePhotoProxy {
@POST
@Consumes("multipart/form-data")
@Produces(value = {MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN})
public ClientResponse<PhotoServiceOutputBean> createPhoto(@PathParam("id") Long id, @MultipartForm PhotoServiceInputBean inputBean);
}
这就是我所说的:
public void uploadPhoto() {
byte[] imageData = getImageData();
CreatePhotoProxy createPhotoProxy = ProxyFactory.create(CreatePhotoProxy.class, baseUrl);
PhotoServiceInputBean photoServiceInputBean = new PhotoServiceInputBean();
photoServiceInputBean.setPhoto(imageData);
response = createPhotoProxy.createPhoto(listingId, photoServiceInputBean);
}
根据 org.apache.http 调试日志(40 字节),我请求的内容长度最终非常小,即使 gzip 压缩对于我正在上传的图像而言显然太小了(imageData.length 约为 50k我正在运行的测试)。
我尝试过手动注册各种提供程序,但我觉得它们应该是内置的,但无论如何我都没有成功。感谢所有帮助。
谢谢!
【问题讨论】:
标签: java file-upload jax-rs resteasy multipartform-data