打印空行 HttpResponse JDK 11

Printing blank lines HttpResponse JDK 11

我正在研究 Java 11 的新 HttpClient,但无法正常工作。当我尝试从网站打印正文时,body() 方法打印空白行:

var httpClient = HttpClient.newHttpClient();        
var request = HttpRequest.newBuilder(URI.create("http://iteratorlearning.com")).build();
HttpResponse<String> response = httpClient.send(request,BodyHandlers.ofString()); 
System.out.println("Printing Body : " + response.body());

为什么response.body()不打印正文中的内容?

如果您检查响应状态代码,您会发现它是 301,这是一个重定向(永久移动)。通过检查响应 headers,您可以看到新位置是 http://iteratrlearning.com。这是到不同站点的重定向,因此默认情况下 HttpClient 不会遵循此 link(重定向到不同站点通常可用于诈骗)。

如果您愿意,您可以将 HttpClient 配置为始终遵循重定向 - 但我不会推荐它用于测试目的之外,或者当您信任原始站点时(您可以使用 HttpClient::followRedirect(Redirect.ALWAYS)