为什么只有在使用JavaHTTP客户机时才能获得HTTP响应状态代码451?

为什么只有在使用JavaHTTP客户机时才能获得HTTP响应状态代码451?,java,http,http-response-codes,java-http-client,Java,Http,Http Response Codes,Java Http Client,我想发出一个GET请求,它可以与OkHttpClient、我的网络浏览器和邮递员一起正常工作。 但是当我使用JavaHTTP客户机时,我会收到响应代码451。 这是我的代码: HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("*Some URL*&qu

我想发出一个GET请求,它可以与OkHttpClient、我的网络浏览器和邮递员一起正常工作。 但是当我使用JavaHTTP客户机时,我会收到响应代码451。 这是我的代码:

HttpClient client = HttpClient.newHttpClient();
             HttpRequest request = HttpRequest.newBuilder()
                   .uri(URI.create("*Some URL*"))
                   .build();

             
            HttpResponse<String> response=null;
            try {
                response = client.send(request, BodyHandlers.ofString());
                System.out.println(response.statusCode());
                System.out.println(response.body());
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }System.out.println(response.body());
             
HttpClient=HttpClient.newHttpClient();
HttpRequest请求=HttpRequest.newBuilder()
.uri(uri.create(“*某些URL*”)
.build();
HttpResponse响应=null;
试一试{
response=client.send(请求,BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}捕获(IOE异常){
e、 printStackTrace();
}捕捉(中断异常e){
e、 printStackTrace();
}System.out.println(response.body());
“451”是印刷品。 为什么?

添加“用户代理”标题解决了我的问题

HttpRequest request = HttpRequest.newBuilder()
                       .uri(URI.create("*URL*"))
                       .header("User-Agent", "Mozilla/5.0")
                       .build();

您似乎没有传入任何授权标头。可能值得尝试附加授权标头,然后发出get请求。获取网络跟踪,并将您的客户端发送的内容与其他工具发送的内容进行比较。感谢您的帮助@阿西夫卡姆兰马利克几乎是对的。添加授权标头没有帮助,但用户代理标头帮了忙。很高兴你找到了答案。