Как протестировать составной веб-сервис REST, включающий загрузку файлов - PullRequest
0 голосов
/ 29 января 2019

Мы пытаемся разработать службу REST, которая принимает загрузку нескольких файлов.

Я внес следующие изменения:

dependencies.gradle:
compile('jersey-multipart:1.2')

web.xml:
<init-param>
    <param-name>jersey.config.server.provider.classnames</param-name>
    <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>

WADL changes:
<resource path="/upload">
  <method name="POST" id="upload" resource-operation="POST /upload">
    <request>                                                               
       <representation mediaType="multipart/form-data" />                                                                                                                                                 
    </request>
    <response status="200">                                                                                
      <representation element="n:Response" mediaType="application/xml"/>
    </response>
  </method>
</resource>

Java:
 @POST
 @Path("/upload")
 @Consumes(MediaType.MULTIPART_FORM_DATA)
 @Produces("application/xml")
 public Response uploadMethod(FormDataMultiPart file) throws FileNotFoundException {
        <>some code here.....<> }

В POSTMAN, в Body мы выбираем параметр 'form-data 'и загрузите файл pdf в виде значения пары ключ-значение.

Когда я нажимаю на этот запрос с помощью POSTMAN, я получаю следующую ошибку:

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

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

Я внес вышеупомянутые изменения по этой ссылке: https://howtodoinjava.com/jersey/jersey-file-upload-example/

...