【问题标题】:MessageBodyWriter not found for media type=application/octet-stream, type=class org.glassfish.jersey.media.multipart.MultiPart找不到媒体类型 = 应用程序/八位字节流,类型 = 类 org.glassfish.jersey.media.multipart.MultiPart 的 MessageBodyWriter
【发布时间】:2017-03-30 17:32:03
【问题描述】:

我在升级 Jersey 发行版后收到 MessageBodyProviderNotFoundException。我已经在web.xml 中注册了MultiPart,但似乎我缺少更多配置。

pom

<!-- Jersey -->
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>${jersey.version.no}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>${jersey.version.no}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>${jersey.version.no}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>${jersey.version.no}</version>
        <exclusions>
            <exclusion>
                <groupId>asm</groupId>
                <artifactId>asm</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>${jersey.version.no}</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-jaxb</artifactId>
        <version>${jersey.version.no}</version>
    </dependency>

web.xml

<servlet>
<servlet-name>Jersey Spring</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.mercuryinsurance.esignature.client.rest.service</param-value>
</init-param>
<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.servlet.filter.contextPath</param-name>
  <param-value>/WEB-INF/jsps/rest</param-value>
</init-param>
<init-param>
  <param-name>jersey.config.servlet.filter.staticContentRegex</param-name>
  <param-value>/(resources|(WEB-INF/jsp))/.*</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

代码:

WebTarget webTarget = client.createResource( ESignatureSpringUtil.getMessage( KeyConstants.ALSB_DOCUSIGN_ADDRESS )
                + ESignatureSpringUtil.getMessage( KeyConstants.REST_SEND_DOCUMENTS_ADDRESS ) );

        Invocation.Builder builder = webTarget
                .path( ESignatureSpringUtil.getMessage( KeyConstants.REST_SEND_DOCUMENTS_ADDRESS ) )
                .request( MediaType.APPLICATION_XML )
                .header( KeyConstants.REST_URI_APPENDERS, docSb )
                .header( DocusignRESTContants.CONTENT_TYPE, DocusignRESTContants.MULTIPART_FORM_DATA )
                .header( DocusignRESTContants.X_DOCUSIGN_AUTHENTICATION, getDocusignAuthHeader( cu ) );

        Response response = builder.post( Entity.entity( multiPart, MediaType.APPLICATION_OCTET_STREAM ), Response.class );

堆栈跟踪

Caused by:   org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/octet-stream, type=class org.glassfish.jersey.media.multipart.MultiPart, genericType=class org.glassfish.jersey.media.multipart.MultiPart.

【问题讨论】:

  • 请同时显示导致此错误的代码
  • @peeskillet。有很多层,但代码在我试图将八位字节流作为媒体类型发送的 post 方法上失败了。

标签: java rest jersey jax-rs


【解决方案1】:

我终于让它工作了。我将表单作为 MultiPart 对象发送,无法发送多个表单。我必须将它作为字节流发送,而不仅仅是作为普通的 java 对象。 multipart.toString().getBytes() 在实体方法中。我从供应商那里收到了 200 个状态码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-19
    • 2015-03-27
    • 2017-07-24
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多