Java HttpResponse代码不是200

Java HttpResponse代码不是200,java,Java,我正在运行一个简单的java程序来获取HttpResponse代码,但是由于某些原因,并非所有代码都是200。我觉得这很奇怪,因为当检查网络选项卡上的某些URL(如www.reddit.com)时,响应是200,但我的程序返回的值不同 下面的代码 try{ String urlName = "http://www.reddit.com"; URL url = new URL(urlName); HttpURLConnection connecti

我正在运行一个简单的java程序来获取HttpResponse代码,但是由于某些原因,并非所有代码都是200。我觉得这很奇怪,因为当检查网络选项卡上的某些URL(如www.reddit.com)时,响应是200,但我的程序返回的值不同

下面的代码

try{
        String urlName = "http://www.reddit.com";

        URL url = new URL(urlName);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.connect();
        String message = connection.getResponseMessage();
        System.out.println("Message: " + message);
        int code = connection.getResponseCode();
        System.out.println(Integer.toString(code));
    }
    catch(Exception e){
        e.printStackTrace();
    }
最后,是否有理由再次将RequestMethod设置为GET和connection?无论我是否有响应代码,我都会得到响应代码,因为连接执行openConnection


目标-使所有有效连接返回200

如果您发布了它给出的错误代码,那就太好了

我自己运行了你的代码,错误是301,意思是永久移动

如果你自己去,你会看到你被重定向到reddit的httpS版本。在urlName中更改此选项将解决您的问题


编辑:facebook也是如此,正如我在对你的问题的评论中所看到的,谷歌并不总是要求https,所以它确实有效。

你说你看到Reddit有301,facebook有302。你的浏览器正在跟踪它们;你的代码不是

Java内置的HTTP支持对最终用户来说不是很好。我强烈建议使用更好的HTTP客户端库,例如,或,它构建在Apache之上,用于同步请求,用于异步


充分披露:我在HubSpot工作;Horizon是我们的一个开源库。

如果不是200,它会打印什么?@MattBall 301用于Reddit,302用于facebook,但谷歌会返回200。如果在网络选项卡下进行检查,则所有值都应为200,这是重定向。你的浏览器正在跟踪它们;你的代码不是。我强烈建议使用更好的HTTP客户端库,比如Apache的HttpClient,或者由我工作的公司HubSpot提供。Java内置的HTTP支持对最终用户来说不是很好。@MattBall谢谢。我将用Apache的HttpClient进行测试。我应该如何解决这个问题?我是否应该删除它,或者你是否可以发表评论,我将你记为已解决?很高兴为你发布答案。