Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich hab hier im Forum und auch bei google schon recht viel geguckt und nichts gefunden. Wenn ich mir von ftp://ftp.fu-berlin.de/pub/misc/movies/database/ratings.list.gz die größe mit getcontentlength holen will bekomm ich bei mir am pc immer -1 zurück, bei meinem bruder jedoch den korrekten wert. Woran kann das liegen?
Vielen Dank für Antworten
Bei mir läufts ohne Probleme. An irgendwelchen Libs kanns nicht liegen, da URLConnection eine Standardimplementierung ist. Würde eher bei deiner Systemkonfiguration nach möglichen Fehlerquellen suchen.
Bei mir tritt das Problem am Laptop und am PC auf, haben beide die exakt gleiche Eclipse version drauf. Bin noch recht neu in Java und Netzwerkprogrammierung, wonach müsste ich suchen ^^
URLConnection con = url.openConnection();
con.connect();
JAPI hat gesagt.:
If the connect method is called when the connection has already been opened (indicated by the connected field having the value true), the call is ignored.
kann also raus ...
ist aber leider nicht die fehlerquelle
2) getContentLength() / getContentLengthLong()
JAPI hat gesagt.:
Returns the value of the content-length header field.
[...]
-1 if the content length is not known, or if the content length is greater than Integer.MAX_VALUE.
getContentLength() erwartet also den HTTP HEADER "Content-Length" ...
und da dieser im FTP nun mal NICHT vorhanden ist ... ist klar das diese methode fehlschlägt ...
und genau das meinte ich eigentlich mit LIBs ... für FTP braucht man eine LIB wie z.b. Apache Commons ... bzw bastelt sich das ganze selber ... wenn man es richtig nutzen kann
URLConnection kann man nur bedingt für FTP nutzen ... wenn man z.b. die größe eines files haben will ... muss man das FTP command SIZE absetzen ... was URLConnection eben NICHT macht ... und desshalb auch keine länge liefern kann
natürlich funktioniert erwartungsgemäß dein code NICHT
In dem Bereich kenn ich mich leider noch gar nicht aus. Die libary apache.commons.net zu importieren hab ich noch hinbekommen, nur schaff ich es hier immer noch nicht die größe der datei raus zu finden. Könnte mir hier jemand ne Anleitung geben wie, da google mir auch nicht hilft.
DAS ist eine schöne frage ... geb ich zu ... würde hier allerdings vermuten das entweder über einen HTTP-proxy gegangen wird der ja dann den HTTP Header Content-Length hat ... oder das der server sonst was macht ... *ich habs mir mit wireshark angesehen ... der server liefert schon die länge ohne explizites SIZE ... jedoch dürfte auf grund des custom-format URLConnection nicht in der lage sein das zu parsen*
WIE du mit apache-commons-ftp die SIZE eines remote-files rausbekommst entnimmst du bitte der ausführlichen API-DOC ...
das wäre mal so die idee die ich hätte ... einfach mal mit wireshark gucken was genau da über den socket kommt ...
kann auch sein das es implementierungsabhängig ist *z.b. wird unter unix gerne IcedTea verwendet ... kann sein das das mit FTP besser klar kommt als OracleSE* ...
oder auch vielleicht mal im openJDK nachgucken ... irgendwo wird der grund für dieses *meiner ansicht nach* fehlverhalten von URLConnection.getContentLength() in zusammenhang mit FTP zu finden sein ...