MessageBodyWriter не найден

Я пытаюсь заставить StreamResponseBody работать с образцами жестко запрограммированных данных.

      @POST
@Path("filetypecsv")
@Produces("text/plain")
public ResponseEntity<StreamingResponseBody> studentsFile() {
    String name = "name";
    String rollNo = "rollNo";    

    StreamingResponseBody stream = output -> {
        Writer writer = new BufferedWriter(new OutputStreamWriter(output));
        writer.write("name,rollNo"+"\n");
            for (int i = 1; i <= 1000; i++) {
                writer.write(name + i + " ," + rollNo  + i + "\n");
                writer.flush();
            }
    };

    return  ResponseEntity.ok()
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=students.csv")
        .contentType(org.springframework.http.MediaType.TEXT_PLAIN)
            .body(stream);
}

Я всегда получаю эту ошибку:

      SEVERE: MessageBodyWriter not found for media type=text/plain, type=class org.springframwork.http.ResponseEntity, genericType=org.springframework.http.ReponseEntity<StreamingResponseBody>.

Я добавил зависимость: jersey-media-json-jackson.

Но я все еще получаю эту ошибку, пожалуйста, сообщите.

1 ответ

Это решение применимо, если ваш код использует Jax.rs.core, а не Spring @RestController. Я не видел решения, в котором вы могли бы использовать Springs StreamingResponseBody вместе с jax.rs. Вместо этого вы можете использовать jax.rs StreamingOutput. Вы можете вернуть ответ jax.rs и (MediaType.TEXT_PLAIN) или эквивалентный поток октетов.

Пожалуйста, смотрите эту ссылку - https://dzone.com/articles/jax-rs-streaming-response

        StreamingOutput stream = new StreamingOutput() {
            @Override
            public void write(OutputStream os) throws IOException, WebApplicationException {
                Writer writer = new BufferedWriter(new OutputStreamWriter(os));

                for (org.neo4j.graphdb.Path path : paths) {
                    writer.write(path.toString() + "\n");
                }
                writer.flush();
            }
        };

        return Response.ok(stream).build();
   
Другие вопросы по тегам