Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器上的Resteasy客户端字节数组为空_Java_File Upload_Jax Rs_Resteasy_Multipartform Data - Fatal编程技术网

Java 服务器上的Resteasy客户端字节数组为空

Java 服务器上的Resteasy客户端字节数组为空,java,file-upload,jax-rs,resteasy,multipartform-data,Java,File Upload,Jax Rs,Resteasy,Multipartform Data,我试图将字节数组从我的resteasy客户端发送到另一个服务(也是resteasy),但我的字节数组在服务器上总是空的 Resteasy:2.3.6.1决赛 是的,我在我的类路径中包含了resteasy多部分提供程序jar 服务器代码: public class PhotoServiceInputBean { private byte[] photo; public byte[] getPhoto() { return photo; } @Fo

我试图将字节数组从我的resteasy客户端发送到另一个服务(也是resteasy),但我的字节数组在服务器上总是空的

Resteasy:2.3.6.1决赛

是的,我在我的类路径中包含了resteasy多部分提供程序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);

}
根据org.apache.http调试日志(40字节),我请求的内容长度非常小,对于我正在上传的图像(在我正在运行的测试中,imageData.length大约为50k),gzip显然太小了

我尝试过手动注册各种提供商,但我觉得它们应该内置,而且无论如何我都没有成功。感谢所有的帮助


谢谢

在对resteasy核心代码进行了大量调试之后,我发现了问题并进行了纠正。当
@MultipartForm
bean将注释放在getter而不是属性本身上时,似乎存在一个错误,这导致http请求无法正确构建。我相信无论您使用的是
ApacheHttpClient4Executor
还是
URLConnectionClientExecutor

我修改过的bean看起来是这样的,现在可以正常工作了:

public class PhotoServiceInputBean {
    @FormParam("photo")
    @PartType("application/octet-stream")
    private byte[] photo;

    public byte[] getPhoto() {
        return photo;
    }

    public void setPhoto(byte[] data) {
        this.photo = data;
    }
}
这是相当残酷的追踪,希望这将有助于任何其他人谁遇到这个问题

public class PhotoServiceInputBean {
    @FormParam("photo")
    @PartType("application/octet-stream")
    private byte[] photo;

    public byte[] getPhoto() {
        return photo;
    }

    public void setPhoto(byte[] data) {
        this.photo = data;
    }
}