java:Tomcat 9 状态码 200 但响应消息为空

Ath*_*ran 6 java rest tomcat http

我有一个 http 客户端,它向 RESTful Web 服务发送请求并接收响应。它在 Tomcat 8 中部署时运行成功。但是当我尝试在 Tomcat 8.5 及更高版本中部署相同的客户端和服务器时,服务器收到的响应代码为 200,但响应消息为空而不是 OK。

下面是我的客户端代码片段

        httpclient = HttpClientBuilder.create().build();
        postrequest.setEntity(new UrlEncodedFormEntity(urlParameters));
        HttpResponse response = httpclient.execute(postrequest);
        
        HttpEntity entity = response.getEntity();
        System.out.println("Response from server ");
        System.out.println(response.getStatusLine().getStatusCode());
        System.out.println(response.getStatusLine().getReasonPhrase());
Run Code Online (Sandbox Code Playgroud)

我的服务器响应代码片段是

@POST
@Path("/download/{filename}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getFile(@PathParam("filename") String file)
{
    try
    {               
        File downloadfile = new File("/home/upload/"+file);

        ResponseBuilder response = Response.ok((Object) downloadfile);
        response.header("Content-Disposition", downloadfile.getName());
        
        return response.build();
            
    }
    catch(Exception e)
    {
        logger.error("Error is : "+e);
        e.printStackTrace();
    }
    
    
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出只是

来自服务器的响应

200

其实应该是

来自服务器的响应

200

好的

小智 5

根据 tomcat 中报告的问题,从 tomcat 8.5 版本开始,他们已停止发送“原因短语”。

https://bz.apache.org/bugzilla/show_bug.cgi?id=60183