11 votes

Utiliser le client REST pour appeler le service web Rest multipart/form-data

J'ai un service web REST basé sur RESTeasy (voir ci-dessous). J'essaie d'utiliser le client REST de Google pour exécuter une requête afin de tester mon service, mais je ne suis pas sûr de la façon dont la requête doit être configurée.

Je ne suis pas sûr de savoir comment envoyer le byte[] comme un paramètre ( filedata ).
Une idée sur la façon de tester cela ?

Je reçois l'exception suivante :

java.io.IOException : Impossible d'obtenir la limite pour le multipart

avec

request:
-content-type=multipart/form-data
-form params:
test=testvalue

Méthode de repos :

@POST
@Path("/upload")
@Consumes("multipart/form-data")
public Response create(@MultipartForm FileUploadForm form) {
   System.out.println("form=" + form.getTest());
   return null;
}

Formulaire de téléchargement de fichier Pojo :

import javax.ws.rs.FormParam;
import org.jboss.resteasy.annotations.providers.multipart.PartType;

public class FileUploadForm {
    private byte[] filedata;
    private String test;

    public FileUploadForm() {}

    public byte[] getFileData() {
        return filedata;
    }

    @FormParam("filedata")
    @PartType("application/octet-stream")
    public void setFileData(final byte[] filedata) {
        this.filedata = filedata;
    }

    public String getTest() {
        return test;
    }

    @FormParam("test")
    @PartType("application/json")
    public void setTest(String test) {
        this.test = test;
    }   
}

12voto

delkant Points 362

Vous devez ajouter cet en-tête à votre demande :

Accept-Encoding:multipart/form-data

En général, vous utilisez le type de contenu comme ceci :

Content-Type: image/png

Vous pouvez le tester avec Client REST Postman

J'ai joint une image montrant comment le formulaire doit être rempli.

postman multipart/form-data

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X