# Zip Dateien über FTP laden



## ballibum (5. Mrz 2019)

Hallo Forum,

ich kann mein Problem aktuell leider nur schlecht beschreiben und den Fehler auch nur schlecht spezifizieren.  Mit folgendem Code lade ich Zip-Dateien:


```
ZipInputStream inputStream = new ZipInputStream(url.openStream());
            if(this.weatherstation.lastEntry == null) {
                System.out.println("Temp: lastEntry is null");
                readExternFileTemp(inputStream);
            }
            else {
                while (inputStream.available() == 1) {
                    ZipEntry ze;
                    while ((ze = inputStream.getNextEntry()) != null) {
                        if(ze.getName().startsWith("produkt")) {
                            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
```

Nun ist es so, das ich nahezu immer folgenden nichtssagenden Fehler erhalte:

```
Mär 05, 2019 4:55:01 PM de.geogockel.simmanager.ballibum.weatherapi.DWDWeatherParser getTemperature
SCHWERWIEGEND: null
java.io.IOException: sun.net.ftp.FtpProtocolException: Welcome message:
    at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:301)
    at sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:393)
    at java.net.URL.openStream(URL.java:1045)
    at de.geogockel.simmanager.ballibum.weatherapi.DWDWeatherParser.getTemperature(DWDWeatherParser.java:49)
    at de.geogockel.simmanager.ballibum.weatherapi.DWDWeatherParser.getWeather(DWDWeatherParser.java:103)
    at de.geogockel.simmanager.ballibum.weatherapi.DWDWeatherParser.<init>(DWDWeatherParser.java:39)
    at de.geogockel.simmanager.ballibum.weathermanager.Weatherstation.update(Weatherstation.java:65)
    at de.geogockel.simmanager.ballibum.weathermanager.Weatherstations.update(Weatherstations.java:58)
    at de.geogockel.simmanager.ballibum.weathermanager.WeatherManager.main(WeatherManager.java:94)
Caused by: sun.net.ftp.FtpProtocolException: Welcome message:
    at sun.net.ftp.impl.FtpClient.connect(FtpClient.java:1015)
    at sun.net.ftp.impl.FtpClient.connect(FtpClient.java:998)
    at sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:294)
    ... 8 more
```

Zeile 49 ist die erste Zeile im oben genannten Code. Wenn ich die FTP-URL zeitnahe im Browser aufrufe, gelingt mir der Download eigentlich immer, nur über Java klappt das alle jubel Jahre.

Es geht zum Beispiel um folgende URLs:
TemperatureURL: ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/climate/hourly/air_temperature/recent/stundenwerte_TU_00656_akt.zip
PericipationURL: ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/climate/hourly/precipitation/recent/stundenwerte_RR_00656_akt.zip

Kann ich den Fehler irgendwie besser eingrenzen um die Ursache dieser Disfunktion zu erhalten?

mit bestem Gruß
Balli


----------



## mihe7 (5. Mrz 2019)

Du könntest mal mitloggen. Dazu legst Du Dir mal eine Datei logging.properties an

```
handlers= java.util.logging.ConsoleHandler
.level= FINEST
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
```
und rufst Dein Programm mit dem Parameter
`-Djava.util.logging.config.file=/path/to/logging.properties` auf.

Dann solltest Du eigentlich jeden Schritt des FTP-Clients ausgegeben bekommen.


----------



## JuKu (17. Mrz 2019)

Die Welcome Message gehört meines Wissens zum FTP Protokoll.
Würde jetzt mal vermuten das ist ein Fehler im FTP Server oder in deiner FTP Library.
Auf jeden Fall bekommt der Client nicht die Nachricht, die er erwartet, also das Protokoll passt nicht.


----------

