Web Services 415通过Postman上传文件到Web服务时出现不支持的媒体类型错误

c2e8gylq  于 2022-11-15  发布在  Postman
关注(0)|答案(1)|浏览(274)

我已经使用Jersey Restful API创建了一个Web服务,并得到了以下内容:

@POST
@Path("/process/")
@Consumes({MediaType.MULTIPART_FORM_DATA})
@Produces({MediaType.APPLICATION_JSON})
public Response process(@FormDataParam("upload") InputStream is, @FormDataParam("upload") FormDataContentDisposition formData);

我使用了以下依赖项:

<dependency>
       <groupId>javax.ws.rs</groupId>
       <artifactId>javax.ws.rs-api</artifactId>
       <version>2.1-m01</version>
   </dependency>

    <!-- https://mvnrepository.com/artifact/com.sun.jersey.contribs/jersey-multipart -->
    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>1.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-server -->
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.ws.rs/jsr311-api -->
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3</version>
    </dependency>

Web.xml中的配置:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/ws-context.xml</param-value>
    </context-param>

在ws-context.xml中,我有以下部分:

<bean id="restManagerService" class="com.rs.service.impl.RestManagerServiceImpl">
        <property name="restRequestService" ref="restRequestService" />
    </bean>

    <bean id="jsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="100000" />
    </bean>

    <jaxrs:server id="userManagerREST" address="/rest/v1">
        <jaxrs:serviceBeans>
            <ref bean="restManagerService" />
        </jaxrs:serviceBeans>

        <jaxrs:providers>
            <ref bean='jsonProvider' />
            <ref bean='multipartResolver' />
            <bean class="com.rs.exception.ExceptionHandler" />
        </jaxrs:providers>
    </jaxrs:server>

为了测试这一点,我使用Postman应用程序发送了一个Post请求。下面是来自 code 窗口的内容:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxxxxxxxxx

------WebKitFormBoundaryxxxxxxxxx
Content-Disposition: form-data; name="upload"; filename="test.json"

我已经参考了google上的几个示例,比如thisthis,和this,我发现我提供的参数是正确的,但是我仍然在Postman中得到415不支持的媒体类型错误。我在这个项目中有几个其他的Web服务,它们使用MediaType application/json,所以项目配置应该不是问题。
有人能解释一下这里出了什么问题吗?
更新:添加了与所使用的所有Jersey和WS相关依赖项相关的其他详细信息以及web.xml文件中的重要内容

yqkkidmi

yqkkidmi1#

可能是 Postman 的问题,不是你的代码。我也有这个问题。
尝试删除Content-type标头,并确保在body选项卡中选择form-data

相关问题