Ste*_*Kuo 2 java rest jax-rs jersey
我正在使用 Jersey 和 JAX-RS 来实现 REST POST 端点。实际的 servletweb.xml是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();
}
Run Code Online (Sandbox Code Playgroud)
当我到达端点并提供一个文本文件时,换行符会丢失,并且会作为一行读入。例子:
line 1
line 2
line 3
Run Code Online (Sandbox Code Playgroud)
打印出:
line 1line 2line 3
Run Code Online (Sandbox Code Playgroud)
我尝试使用注释@Consumes("text/plain")并将请求标头设置为,Content-Type:text/plain但这没有帮助。为什么换行序列被删除?
我正在使用curl上传,这显然删除了换行符
curl -v -X POST -d @input.txt http://localhost/foo
Run Code Online (Sandbox Code Playgroud)
使用--data-binary代替解决了问题。
curl -v -X POST --data-binary @input.txt http://localhost/foo
Run Code Online (Sandbox Code Playgroud)