使用Jersey和JAX-RS上传POST时,新行会丢失

时间:2014-03-11 23:59:08

标签: java rest jersey jax-rs

我使用Jersey和JAX-RS来实现REST POST端点。 web.xml中的实际servlet是com.sun.jersey.spi.spring.container.servlet.SpringServlet。然后我使用JAX-RS来注释我的端点:

  @POST
  @Path("foo")
  public Response foo(Reader input) throws IOException {
    BufferedReader lineReader = new BufferedReader(input);
    String line;
    while ((line = lineReader.readLine()) != null) {
      System.out.println(line);
    }

    return Response.ok("{}", MediaType.APPLICATION_JSON).build();
  }

当我点击端点时,提供一个文本文件,换行字符丢失,并且它作为一行读入。例如:

line 1
line 2
line 3

打印出来:

line 1line 2line 3

我尝试使用@Consumes("text/plain")进行注释并将请求标头设置为Content-Type:text/plain,但这并没有帮助。为什么要删除换行序列?

1 个答案:

答案 0 :(得分:2)

我正在使用curl上传,这显然会删除换行符

curl -v -X POST -d @input.txt http://localhost/foo

使用--data-binary代替解决了问题。

curl -v -X POST --data-binary @input.txt http://localhost/foo