[英]get http response code from a url
我想编写一个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);
我尝试了你的代码如下,它对我来说很好:
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
获得响应代码。 在您的代码中,您似乎使用的是非现有URL,因此必须获得无法访问的主机异常。
尝试访问有效的URL并检查响应代码:
URL url = new URL("https://google.com");
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);
尝试使用其他网址,因为您使用的网址无效。 ' https://abc.com/test.html ' - 不存在此类页面,因此它提供了异常。 尝试一个有效的网址,它会正常工作。
即使我得到相同的异常,即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)
您获得此异常是因为您在组织代理后面的组织上执行代码。
请使用以下修改后的代码。 你将得到200 OK作为responseCode。
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import javax.net.ssl.HttpsURLConnection;
public class TestURLConnection {
/**
* @param args
*/
public static void main(String[] args) {
try{
URL url = new URL("https://www.google.com/");
System.setProperty("https.proxyHost", "XXX.XXX.XXX.XX");
System.setProperty("https.proxyPort", "80");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int code = connection.getResponseCode();
System.out.println("code: "+code);
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:1。您需要从组织网络管理员处获取proxyHost IP。 2.您应该使用HttpsURLConnection访问https URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.