Java 从url获取http响应代码
我想写一个Java程序,它将点击一个URL并打印状态码(即200、404等)。我使用的是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
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)像这样?