2017-02-24 3 views
1

Ich versuche Multipart Formular in den Jersey 2.22.1 Server als eine POST-Anfrage zu senden. Diese Anfrage enthält Datei- und mehrere Textfelder. Was auf der Serverseite passiert, ist, dass ich die Datei nur als InputStream empfangen kann, aber alle Textargumente, die ich empfange, sind null.Jersey - Multipart Datenformular mit Text Körperteile

Hier ist, was ich habe:

pom.xml:

<dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>2.22.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.22.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-json-jackson</artifactId> 
     <version>2.22.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-multipart</artifactId> 
     <version>2.22.1</version> <!-- Make sure the Jersey matches 
          the one you are currently using --> 
    </dependency> 

    <dependency> 
     <groupId>org.jvnet.mimepull</groupId> 
     <artifactId>mimepull</artifactId> 
     <version>1.9.6</version> 
    </dependency> 

web.xml:

<servlet> 
    <servlet-name>vedica-api</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value> 
      org.glassfish.jersey.media.multipart.MultiPartFeature 
     </param-value> 
    </init-param> 

    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.nws.vedica.api,com.fasterxml.jackson</param-value> 
    </init-param> 

    <load-on-startup>1</load-on-startup> 
</servlet> 

und Code:

import org.glassfish.jersey.media.multipart.FormDataContentDisposition; 
import org.glassfish.jersey.media.multipart.FormDataParam; 
... 

@POST 
    @Produces("text/plain") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response createDocument(
      @FormDataParam("meno") String name, 
      @FormDataParam("rc") String rc, 
      @FormDataParam("typzml") String typzml, 
      @FormDataParam("auto") String auto, 
      @FormDataParam("verzia") String verzia, 
      @FormDataParam("documentcustomname") String doccustomname, 
      @FormDataParam("docpath") String docpath, 
      @FormDataParam("file") InputStream data, 
      @FormDataParam("file") FormDataContentDisposition fileInfo 
    ) { 
     ... 
     return Response.ok().build(); 
    } 

so alle Parameter String sind null.

Und hier ist Screenshot, wie ich die Anfrage bin sendin:

enter image description here

können Sie erklären, was mache ich falsch und wie dieses Problem beheben?

Dank

+0

Ich denke, FormParam seine Groß- und Kleinschreibung, vielleicht hat es nichts zu tun, aber haben Sie versucht, den Fall auf der Anfrage und @FormDAtaParam ie typzml vs TypZML – cesaregb

+0

gut, wie Sie sehen können, sind Params, die übereinstimmen genau und dann diejenigen, die teilweise übereinstimmen ... alle null – greengold

Antwort

0

okey, so fand ich, dass es mein IDE war die falsch Erstellung Krieg Paket wurde. Code und Abhängigkeiten sind in Ordnung, aber zumindest habe ich herausgefunden, dass Parameter die Groß-/Kleinschreibung beachten!

Verwandte Themen