2017-10-02 8 views
1

J'ai commencé à utiliser RESTAssured récemment. Je fais un appel REST en utilisant la bibliothèque RESTAssured. J'ai une pièce jointe dans la demande que j'attache en utilisant la méthode "multipart()". Pour mon API, je devrais passer "application/x-abc-xyz+xml" en tant que type de contenu. Lorsque j'ai essayé de régler ceci en utilisant la méthode " contentType()", je reçois l'erreur ci-dessous. Cependant, précéder le type de contenu avec "multipart /" résoudra cette erreur mais je n'obtiens pas la réponse REST du serveur car il attend le type de contenu sans le préfixe "multipart/" . J'ai besoin d'aide pour résoudre ce problème. Toute aide serait appréciée. Merci!RESTAssured Multipart content-type

java.lang.IllegalArgumentException: Content-Type application/x-hub-multipart + xml n'est pas valide lors de l'utilisation multiparts, il doit commencer par "multipart /". à sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) à sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) à sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) à java.lang.reflect.Constructor.newInstance (Constructor.java:423)
à org.codehaus.groovy.reflection.CachedConstructor.invoke (CachedConstructor.java:83) à org.codehaus.groovy.reflection.CachedConstructor .doConstructorInvoke (CachedConstructor.java:77) at org.codehaus.groovy.runtime.call site.ConstructorSite ConstructorSiteNoUnwrap.callConstructor $ (ConstructorSite.java:84) à org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor (CallSiteArray.java:60) à org.codehaus.groovy.runtime.callsite. AbstractCallSite.callConstructor (AbstractCallSite.java:235) à org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor (AbstractCallSite.java:247) à io.restassured.internal.RequestSpecificationImpl.registerRestAssuredEncoders

Répondre

1

cela peut fonctionner, vous pouvez essayer cela, par exemple: Type de fichier de pièce jointe en tant que ". png "

Response response = given() 
            .multiPart(new MultiPartSpecBuilder(resourceFile).fileName(filename) 
                        // controlName is the name of the 
                        // RequestParam associated with the 
                        // MultipartFile[] array 
                        .controlName("file") 
                        .mimeType("image/png") 
                        .build()) 
            .param("documentType", "MyCat") // You can omit this if U want 
            .when() 
            .post("my URI") 
            .then() 
            .extract() 
            .response(); 
+0

Merci pour votre réponse. J'ai essayé ça. Vous ne transmettez aucun type de contenu dans votre code, il faudra donc "multipart/form-data" comme type de contenu par défaut. Dans mon cas, j'essaie de passer "application/x-abc-xyz + xml" comme type de contenu. – kav12345