Jersey client exception: A message body writer was not found

前端 未结 6 1084
说谎
说谎 2020-12-03 15:55

I am using Jersey client to hit a PHP web service for image uploading functionality. I am getting the following exception:

Caused by: com.sun.jersey.api.clie         


        
6条回答
  •  清歌不尽
    2020-12-03 16:37

    I faced the same issue. It got solved by changing maven dependency for jersey-multipart jar from 1.0.2 to 1.8 version (Used the same dependency in client side as well as provider side.

                 
                    com.sun.jersey.contribs
                    jersey-multipart
                    1.8
                 
    

    Here's the complete piece of code I'm using

    File file = new File("E:/Goodies/tmp/sparrow.jpg");
    byte[] logo = FileUtils.readFileToByteArray(file);
    
    MultiPart multiPart = new MultiPart().bodyPart(new BodyPart(logo, MediaType.APPLICATION_OCTET_STREAM_TYPE));
    
    // POST the request
    try{
    ClientResponse response = service.type("multipart/mixed").post(ClientResponse.class, multiPart);
    System.out.println("Response Status : " + response.getEntity(String.class));
    }catch(Exception e){
        e.printStackTrace();
    }
    

    and in the webservice:

    @POST
    @Consumes("multipart/mixed")
    @Path("/upload")
    public Response post(MultiPart multiPart) {
    
        BodyPartEntity bpe = (BodyPartEntity) multiPart.getBodyParts().get(0)
                .getEntity();
    
        boolean isProcessed = false;
        String message = null;
        try {
            InputStream source = bpe.getInputStream();
            BufferedImage bi = ImageIO.read(source);
    
            File file = new File("E:/Goodies/tmp" + "123.jpg");
    
            // storing the image to file system.
            if (file.isDirectory()) {
                ImageIO.write(bi, "jpg", file);
            } else {
                file.mkdirs();
                ImageIO.write(bi, "jpg", file);
            }
            isProcessed = true;
        } catch (Exception e) {
            message = e.getMessage();
        }
    

提交回复
热议问题