Java URL-Klasse openStream werfen java.net.ConnectException: Connection refused: connect
Ich versuche zu schreiben ein einfaches Programm, das zeigt die Inhalte der verschiedenen URLS. Mein code ist dieser.
import java.io.IOException;
import java.io.InputStream;
import java.net.*;
public class test {
public static void main(String[] args) {
URL url;
//String site ="ftp://ftp.suse.com/";
//String site ="http://www.google.ca";
//String site = "ftp://ftp.gnu.org/README";
String site = "ftp://metalab.unc.edu/";
try {
url = new URL(site);
InputStream stream = url.openStream();
for(int i = 0;i!= -1;i= stream.read()){
System.out.print((char)i);
}
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Den ersten 3 Ressourcen sind in Ordnung
- String Standort ="ftp://ftp.suse.com/";
- String Standort = "http://www.google.ca";
- String Standort = "ftp://ftp.gnu.org/README";
aber die Letzte
- String Standort = "ftp://metalab.unc.edu/";
produziert den folgenden Fehler
java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.ftp.impl.FtpClient.openPassiveDataConnection(Unknown Source)
at sun.net.ftp.impl.FtpClient.openDataConnection(Unknown Source)
at sun.net.ftp.impl.FtpClient.list(Unknown Source)
at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at test.main(test.java:13)
Geschieht dies auch mit verschiedenen anderen ftp-sites, die ich ausprobiert habe auch. Habe keine Probleme mit HTTP-Seiten. Irgendwelche Ideen was ich tun kann, um dieses Problem zu beheben. Alle angegebenen Ressourcen, die ich erreichen kann von meinem browser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich, dass die Website ist die Verweigerung nicht-browser-user-agents. Sie können versuchen, die Einstellung der Benutzer-Agent:
sun.net.ftp.FtpProtocolException: PORT :500 Illegal PORT command, EPSV ALL in effect at sun.net.ftp.FtpClient.openDataConnection(FtpClient.java:435) at sun.net.ftp.FtpClient.list(FtpClient.java:624) at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:373) at test.main(test.java:17)
Long shot: könnte es sein, dass der Netzwerk-firewall ist selektiv filtern, wo Sie zugreifen können, wenn Sie Ihre proxy-server?
Einem quick-test: ändern Sie Ihre browser-config, so dass es verwendet die direkte Verbindung (kein auto-proxy-Konfiguration oder einen bestimmten proxy), und geben Sie einfach die url des betreffenden ftp-server, zu sehen, ob es funktioniert.
Wenn es nicht funktioniert, das könnte Ihr problem sein, und Sie müssen verwenden, eine Bibliothek, können Sie einen Proxyserver angeben, vielleicht HttpCore.
Wenn alles andere fehlschlägt, installieren Sie wireshark und sehen, was auf der Erde geschieht jetzt auf der Netzwerk-Ebene...