我使用java HttpURLConnection
类连接到url,我想生成ConnectException来监视和记录一些数据。我只是想连接随机网站但我无法生成ConnectionException
,即使我试图访问不存在的网址但它正在捕捉MalformedURLException
来自ConnectException
的Java文档,
http://docs.oracle.com/javase/7/docs/api/java/net/ConnectException.html#ConnectException()
表示尝试连接套接字时发生错误 远程地址和端口。通常,连接被拒绝 远程(例如,没有进程正在侦听远程地址/端口)。
这意味着需要从远程服务器拒绝连接,但我不知道这是什么意思以及如何从我的java代码生成它?
答案 0 :(得分:5)
当您尝试连接到不存在的URL时,可能会发生两种错误:
在这两种情况下,都不会抛出ConnectException
,因为此异常需要
ConnectException
和套接字基本上位于ISO / OSI堆栈的第3层或第4层(即TCP / IP),而您的格式错误的URL是应用层问题。
您的解决方案:查找具有有效DNS条目但没有侦听网络服务器的服务器。除非您自己在端口80上托管网络服务器,否则::1
应该是一个安全的选择。这是一个最小的工作示例:
package Foo;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class TestClass {
public static void main(String[] args) throws IOException {
URL url = new URL("http://localhost");
HttpURLConnection c = (HttpURLConnection)url.openConnection();
c.connect();
}
}