Как решить MessageBodyWriter не найден для медиа типа = multipart / form-data - PullRequest
0 голосов
/ 04 февраля 2019

Мы пытаемся прочитать составной REST-запрос на стороне сервера.

В работающий Java-проект REST были внесены следующие изменения.

web.xml

<servlet>
        <servlet-name>AbcServlet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>filter-name</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>package-name</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

dependencies.gradle

compile('com.sun.jersey.contribs:jersey-multipart:1.2')
compile('org.jvnet:mimepull:1.4')

Java-код:

    @POST
    @Path("/upload")
    @Consumes("multipart/form-data")
    @Produces("application/xml")
    public Response upload(@Context UriInfo uriInfo, @Context HttpServletRequest request, FormDataMultiPart multipart ) {

.....java code....

}

Но когда я проверяю этоСлужба REST, использующая POSTMan, выдает следующую ошибку:

javax.ws.rs.InternalServerErrorException: HTTP 500 Internal Server Error
    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:90)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130)
    at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711)
    at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444)
    Truncated. see log file for complete stacktrace
Caused By: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=multipart/form-data, ...
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:247)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
    at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106)
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86)
    Truncated. see log file for complete stacktrace
> 
Feb 04, 2019 6:22:06 PM org.glassfish.jersey.server.ServerRuntime$Responder process
SEVERE: Error occurred when processing a response created from an already mapped exception.

Я также прочитал и внес изменения в соответствии с Исключение клиента в Джерси: не был найден модуль записи тела сообщения

Пожалуйста, сообщите, что нужно сделать, чтобы решить эту проблему.

Можете ли вы также предоставить код на стороне клиента, чтобы проверить его в тестовом примере.

1 Ответ

0 голосов
/ 12 февраля 2019

Проблема была решена путем создания одинаковых версий всех банок из джерси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...