【问题标题】:415 Unsupported Media Type error when uploading file to Webservice through Postman通过 Postman 将文件上传到 Webservice 时出现 415 Unsupported Media Type 错误
【发布时间】:2018-08-06 12:32:48
【问题描述】:

我使用 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 请求。以下是 代码 窗口的内容:

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

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

我已经在 google 上引用了几个示例,例如 thisthisthis,我看到我提供了正确的参数,但我仍然在 Postman 中收到 415 Unsupported Media Type 错误。我在这个项目中还有其他几个使用 MediaType application/json 的 Web 服务,因此项目配置应该不是问题。

有人可以解释一下这里出了什么问题吗?

更新:添加了与使用的所有球衣和 WS 相关的依赖项以及 web.xml 文件中的重要内容相关的其他详细信息

【问题讨论】:

  • 三件事。 1. 您使用的是哪个泽西岛版本? 2. 你能显示你的依赖关系吗? 3. 能否展示一下应用配置。
  • 球衣多部分:1.19.4,球衣核心:1.19.4。我在一个现有项目中执行此操作,其中其他几个 Web 服务已经在使用 MediaType 应用程序/json。如果您需要除这些之外的更多详细信息,请告诉我,我会尽力提供
  • 请更新您的帖子将所有请求信息。不要把它放在评论中。谢谢。
  • 更新问题,提供更多细节,谢谢。
  • 你能发布与泽西岛相关的所有依赖项吗?您还可以发布您的应用配置(无论是 web.xml 还是 Java 配置)以及您使用的是什么服务器?

标签: web-services jersey postman


【解决方案1】:

这可能是 Postman 的问题,而不是您的代码。我也遇到过这个问题。

尝试删除Content-type 标头,并确保在body 选项卡中选择form-data

【讨论】:

  • @Cdeez 您是否尝试过使用不同的客户端进行测试?
猜你喜欢
  • 2018-06-10
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多