Java intellij Idea中的连接超时错误
我正在尝试使用HttpURLConnection发出一个简单的http请求。我收到此错误,连接超时。我正在使用intellij IDEA,并正确设置代理。在设置中检查连接,表示连接成功。可能出了什么问题?这是我的密码Java intellij Idea中的连接超时错误,java,intellij-idea,Java,Intellij Idea,我正在尝试使用HttpURLConnection发出一个简单的http请求。我收到此错误,连接超时。我正在使用intellij IDEA,并正确设置代理。在设置中检查连接,表示连接成功。可能出了什么问题?这是我的密码 import java.io.*; import java.net.*; /** * Created by admin on 22/8/15. */ public class Hello { public static void main(String [] args
import java.io.*;
import java.net.*;
/**
* Created by admin on 22/8/15.
*/
public class Hello {
public static void main(String [] args)
{
try
{
URL url = new URL("http://www.google.com");
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = null;
if(urlConnection instanceof HttpURLConnection)
{
connection = (HttpURLConnection) urlConnection;
}
else
{
System.out.println("Please enter an HTTP URL.");
return;
}
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String urlString = "";
String current;
while((current = in.readLine()) != null)
{
urlString += current;
}
System.out.println(urlString);
}catch(IOException e)
{
e.printStackTrace();
}
}
}
错误如下所示
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
at Hello.main(Hello.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Process finished with exit code 0
创建两个同名的属性文件(proxy.properties)。使用包含以下内容的文件:
http.proxyHost=lotus
http.proxyPort=8080
http.proxyHost=
http.proxyPort=
。。。用于开发,并包含:
http.proxyHost=lotus
http.proxyPort=8080
http.proxyHost=
http.proxyPort=
应运至生产部
那么在你上面的班级里:
static Proxy getProxy() throws IOException {
Properties proxyProperties = new Properties();
InputStream inputStream = null;
try {
inputStream = Hello.getClass().getClassLoader().getResourceAsStream("proxy.properties");
proxyProperties.load(inputStream);
} finally {
if(inputStream != null) {
try {
inputStream.close();
} catch(IOException ioe) {
}
}
}
String proxyHost = proxyProperties.getProperty("http.proxyHost");
if(proxyHost != null && proxyHost.length() > 0)) {
String proxyPort = proxyProperties.getProperty("http.proxyPort");
SocketAddress addr = new InetSocketAddress(proxyHost, Integer.parseInt(proxyPort));
return new Proxy(Proxy.Type.HTTP, addr);
}
return null;
}
然后在您的主要方法中:
...
URL url = new URL("http://www.google.com");
URLConnection urlConnection;
Proxy = getProxy();
if(proxy != null) {
urlConnection = url.openConnection(proxy);
} else {
urlConnection = url.openConnection();
HttpURLConnection connection = null;
...
我不想在我的代码中使用代理,这对我来说是不可行的@RCI在我的IntelliJ 11上测试了你的代码,效果很好。是的,在我的代码中使用系统属性时效果很好。但是当从代码中删除这些行时,它就不起作用了@TimBiegeleisenWildcard imports是一种糟糕的做法,因为很难看到引用的类来自何处。然后,您无法查看它是来自同一个包还是来自库的类。若在包中有相同的名称,那个么无意中隐藏库类就更容易了。