![](/img/trans.png)
[英]org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=multipart/form-data
[英]MessageBodyWriter not found for media type=application/octet-stream, type=class org.glassfish.jersey.media.multipart.MultiPart
升級Jersey發行版后,我收到MessageBodyProviderNotFoundException
。 我已經注冊了MultiPart
在web.xml
,但它似乎像我缺少更多的配置。
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.
我終於得到它的工作。 我正在將表單發送為MultiPart對象,以便能夠發送多個表單。 我不得不將其作為字節流發送,而不僅僅是作為普通的Java對象發送。 實體方法中的multipart.toString().getBytes()
。 我從供應商那里得到了200個狀態代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.