简体   繁体   English

找不到针对媒体类型=应用程序/八位字节流,类型=类org.glassfish.jersey.media.multipart.MultiPart的MessageBodyWriter

[英]MessageBodyWriter not found for media type=application/octet-stream, type=class org.glassfish.jersey.media.multipart.MultiPart

I am getting MessageBodyProviderNotFoundException after upgrading the Jersey distribution. 升级Jersey发行版后,我收到MessageBodyProviderNotFoundException I've registered the MultiPart in the web.xml but it seems like I am missing more to configure. 我已经注册了MultiPartweb.xml ,但它似乎像我缺少更多的配置。

pom 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 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>

Code: 码:

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

stacktrace 堆栈跟踪

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.

I finally got it to work. 我终于得到它的工作。 I am sending the form as MultiPart object t be able to send multiple forms. 我正在将表单发送为MultiPart对象,以便能够发送多个表单。 I had to send it as a byte stream not just as a plain java object. 我不得不将其作为字节流发送,而不仅仅是作为普通的Java对象发送。 multipart.toString().getBytes() in the entity method. 实体方法中的multipart.toString().getBytes() I am getting 200 status code back from the vendor. 我从供应商那里得到了200个状态代码。

暂无
暂无

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

相关问题 org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=multipart/form-data - org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=multipart/form-data 布尔类型,并且未找到MIME媒体类型application / octet-stream Java(泽西岛) - Type boolean, and MIME media type application/octet-stream was not found Java (Jersey) 找不到媒体类型= application / octet-stream的MessageBodyReader - MessageBodyReader not found for media type=application/octet-stream Jersey:找不到媒体类型= application / json的MessageBodyWriter,类型= class org.codehaus.jackson.node.ObjectNode? - Jersey: MessageBodyWriter not found for media type=application/json, type=class org.codehaus.jackson.node.ObjectNode? 找不到媒体类型= Application / json,glassfish的MessageBodyWriter - MessageBodyWriter not found for media type=Application/json, glassfish 在JerseyTest中找不到媒体类型= multipart / form-data的MessageBodyWriter - MessageBodyWriter not found for media type=multipart/form-data in JerseyTest 找不到类 org.glassfish.jersey.media.multipart.FormDataContentDisposition 的主要或默认构造函数 - No primary or default constructor found for class org.glassfish.jersey.media.multipart.FormDataContentDisposition 泽西与Grizzly:找不到媒体类型= application / json的MessageBodyWriter - Jersey with Grizzly: Getting MessageBodyWriter not found for media type=application/json 泽西(Jersey)REST错误,找不到媒体类型= application / json的MessageBodyWriter - Jersey REST error, MessageBodyWriter not found for media type=application/json 泽西岛+灰熊HTTP +杰克逊(未针对媒体类型= application / xml找到MessageBodyWriter) - Jersey + Grizzly HTTP + Jackson (MessageBodyWriter not found for media type=application/xml)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM