繁体   English   中英

泽西岛 - 包含文本正文部分的多部分数据表单

[英]Jersey - Multipart data form with text body parts

我试图将Multipart Form作为POST请求发送到Jersey 2.22.1服务器。 此请求包含文件和多个文本字段。 服务器端发生的事情是我只能接收文件作为InputStream,但是我接收的所有文本参数都是null。

这就是我所拥有的:

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>

和代码:

    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();
    }

所以所有String参数都为null。

以下是我如何发送请求的屏幕截图:

在此输入图像描述

你能解释一下我做错了什么以及如何解决这个问题?

谢谢

好吧,所以我发现是我的IDE错误地创建了war包。 代码和依赖项都很好,但至少我发现参数区分大小写!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM