Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从url获取http响应代码_Java_Http - Fatal编程技术网

Java 从url获取http响应代码

Java 从url获取http响应代码,java,http,Java,Http,我想写一个Java程序,它将点击一个URL并打印状态码(即200、404等)。我使用的是HttpUrlConnectionapi,但它只显示异常,不打印状态代码 URL url = new URL("https://abc.com/test.html"); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.co

我想写一个Java程序,它将点击一个URL并打印状态码(即200、404等)。我使用的是
HttpUrlConnection
api,但它只显示异常,不打印状态代码

URL url = new URL("https://abc.com/test.html");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

int code = connection.getResponseCode();  
System.out.println("code: "+code);

只有当您能够访问
URL
时,才会从该URL获得响应代码。在您的代码中,您似乎正在使用一个不存在的URL,因此必须获得无法访问的主机异常

尝试访问有效的URL并检查响应代码:

URL url = new URL("https://google.com");

只有当您能够访问
URL
时,才会从该URL获得响应代码。在您的代码中,您似乎正在使用一个不存在的URL,因此必须获得无法访问的主机异常

尝试访问有效的URL并检查响应代码:

URL url = new URL("https://google.com");

我按以下方式尝试了your代码,它对我很有效:

import java.net.*;

public class Action 
{

    public static void main(String[] args)
    {
        try
        {
            URL url = new URL("http://localhost:8888");
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();

            int code = connection.getResponseCode();  
            System.out.println("code: "+code);
        }
        catch(Exception e)
        {

        }

    }
}


还有谷歌。

我尝试了以下your代码,对我来说效果很好:

import java.net.*;

public class Action 
{

    public static void main(String[] args)
    {
        try
        {
            URL url = new URL("http://localhost:8888");
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();

            int code = connection.getResponseCode();  
            System.out.println("code: "+code);
        }
        catch(Exception e)
        {

        }

    }
}
URL url = new URL("https://www.google.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

int code = connection.getResponseCode();  
System.out.println("code: "+code);

还有谷歌

URL url = new URL("https://www.google.com");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();

int code = connection.getResponseCode();  
System.out.println("code: "+code);
请尝试使用其他url,因为您使用的url无效。“”不存在这样的页面,所以它给出了异常。尝试一个有效的url,它会很好地工作


请尝试使用其他url,因为您使用的url无效。“”不存在这样的页面,所以它给出了异常。尝试一个有效的url,它会正常工作。

即使我遇到了相同的异常,即java.net.ConnectException:连接超时:如果我没有在代码中添加代理和端口,则连接

java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
    at edu.sandip.TestURLConnection.main(TestURLConnection.java:23)
注: 1.您需要从组织网络管理员处获取proxyHost IP。
2.您应该使用HttpsURLConnection来访问https URL。

即使我遇到了相同的异常,例如java.net.ConnectException:Connection timed out:connect如果我没有在您的代码中添加代理和端口

java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
    at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(Unknown Source)
    at sun.net.NetworkClient.doConnect(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.http.HttpClient.openServer(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
    at edu.sandip.TestURLConnection.main(TestURLConnection.java:23)
注: 1.您需要从组织网络管理员处获取proxyHost IP。
2.您应该使用HttpsURLConnection访问https URL。

但它只显示异常该异常是什么?连接超时。连接超时不是HTTP响应代码。根本没有响应。如何使用
HttpURLConnection#setReadTimeout
!并且也要做正确的异常处理…尝试设置
connection.setConnectTimeout(8000)像这样?但它只显示异常该异常是什么?连接超时。连接超时不是HTTP响应代码。根本没有响应。如何使用
HttpURLConnection#setReadTimeout
!并进行适当的异常处理…尝试设置
connection.setConnectTimeout(8000)