heute würde ich gern eine Verbindung zu meinem FTP-Server herstellen. Dafür gibt es scheinbar nur eine einzig wahre Möglichkeit. Nämlich die von Apache Commons Net. Ich habe nun schon den Code von 6 verschiedenen Seiten ausprobiert. Mein Problem liegt an folgender Stelle:
FTPClient client = new FTPClient();
Sobald er an diesen Punkt kommt, stoppt mein Programm und markiert diese Zeile. Ich habe auch schon eine Library von einer anderen Seite probiert. Funktioniert leider auch nich. Mein Code sieht folgendermaßen aus:
{
FTPClient client = new FTPClient();
FileOutputStream fos = null;
try {
client.connect("ftp://www1.subdomain.com");
client.login("--user--","--passwort--");
//
// The remote filename to be downloaded.
//
String filename = "test.txt";
fos = new FileOutputStream(filename);
//
// Download file from FTP server
//
client.retrieveFile("/www/" + filename, fos);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}```
Hat jemand ne Idee woran das liegen könnte? Hab als Berechtigung das Internet hinzugefügt. Er bleibt wie gesagt bei dieser einen Zeile hängen. Die App stürzt dann einfach ab. Wenn ich wirklich -nur- diese Zeile drin habe stürzt er auch ab. Ich kann mir nicht so recht vorstellen was er dagegen hat :S
Sieht für mich danach aus, als ob die Library fehlt. Wenn er eine Klasse laden will wirft es eine ClassNotFoundException und die App müsste abstürzen.
Überprüf doch mal ob die Klassen auch in der apk enthalten sind, bzw. im Classpath enthalten sind (falls es das bei Android überhaupt gibt, hab wenig Ahnung davon).
ausgezeichnete Frage
Die App stürzt ab. Bedeutet, dass alles schwarz bleibt und die Oberfläche nicht geladen wird (weil ich das mit dem FTP-Zugriff gleich beim Start probiere). Nach einigen Sekunden lande ich wieder auf meinem Startbildschirm vom Handy und bekomme die Meldung „Application-TEST wurde angehalten“.
Zu dem 2. Tipp:
wie bekomme ich das heraus? Ich bin leider noch recht frisch in Sachen Java und Eclipse. Kannst du mir da ein wenig unter die arme greifen? Wenn ich im Projektexplorer links unter Referenced Librarys gucke, sehe ich da „commons-net-3.3-sources.jar“
Nun ja, es geht also um eine AndroidApp, hab ich wohl verpasst, dass das angesagt wurde. Naja, die FTP-Verbindung an sich ist ja nun kein reines Androidproblem, daher würde ich an deiner Stelle die gesamte FTP-Geschichte mal auf deinem Rechner ohne den Adroidkram zum laufen bringen, bevor ich das dann zu Android portiere.
Ich bin wenig mit Android bewandert aber dennoch findet man so eher mal ein Problem und evntl. gibts mal ne exception.
Wie der Dateiname schon sagt, es handelst sich dabei um die Sources, also .java Dateien. Wundert mich allerdings, das es mit denen alleine überhaupt compiliert.
Du brauchst die binary Version, in der die compilierten .class Dateien enthalten sind.
Wenn ich das aber genau so in mein Android-Projekt kopiere, geht nichts mehr.
Anhand solcher Beschreibungen lässt sich schwerlich eine Ursache nennen. Wie äußert sich das „geht nichts mehr“? Exception, Programmabsturz? Unerwartete Ergebnisse? Bis zur Lieferung einer genaueren Beschreibung von mir etwas Raterei: String savePath = "/storage/emulated/0/test123321.txt";
Der Save-Path ist hart codiert. Wenn Du die Anwendung genau so in Dein Android-Projekt kopierst, wird dieser alsoauch dort zum Speichern verwendet. Möglicherweise gibt es diesen Path dort schlicht so nicht.
was auch sein könnte : Apache Commons ist nicht für die verwendung auf Android ausgelegt … macht also im konstruktor irgendwas was auf Android nicht geht (wäre ja nicht das erste mal das Apache den fehler macht und direkt auf sun.* klassen zugreift obwohl in jedem anfänger-buch steht das man sowas nicht machen soll)
persönlich halte ich eh nicht viel von den ach so hoch-gelobten commons … in meinen augen einfach überbewertet nach dem motto : die anderen nutzen es ja auch
sollte der fehler also wirklich die zeile mit dem konstruktor-aufruf sein gibts leider nur eine antwort : du kannst in deinem projekt die apache commons leider nicht nutzen
btw : wobei ich mich immer wieder frage wie leute auf diese wahn-witzige idee kommen irgendwelche zugangsdaten mit in die binaries packen zu wollen … ich erinner mich da an so einige fälle der vergangenheit wo dann auch gleich mal die login-daten im forum gepostet und die zugänge übernommen wurden …
wenn man also keine möglichkeit einer eigenen server-software hat die sowas regelt bleibt einem meist nur der webservice …
Hi vielen dank für die ganzen Tipps. Um es einfach zu sagen: Ich habe einen Kalender auf dem Computer und einen auf dem Handy (beide selbst programmiert). Die daten liegen in einer XML-Datei (testweise. später in einer sql datei,aber egal). Meine Frage: wie stelle ich es an, die datei vom rechner aufs handy zu bekommen? ohne jedesmal vor dem Verlassen des Hauses eine Synchronisation zu vollziehen. Dafür wollte ich eigentlich Dropbox nutzen. Also, dass am Rechner die XML Datei einfach in den DropBox ordner gespeichert wird. Automatisch wird sie ja dann hochgeladen. Am rechner alles kein Problem. Doch wie greife ich dann auf Dropbox vom handy zu ? Habs wirklich wirklich nicht hinbekommen bisher. Schade…
Welche Alternativen gibt es sonst? Der Rechner läuft nicht die ganze Zeit -> Ein Webservice von Zuhause aus ist also keine Alternative. Oder wie genau war es gemeint mit dem Service?
Hat denn iiirgendjemand Erfahrung damit, Daten aus dem Internet zu laden, zu bearbeiten und am ende wieder hochzuladen? Vielen Dank!
das sdk herunter geladen und den lib ordner in den libs ordner meines projektes kopiert. In Eclipse habe ich dann über Build Path -> Java Build Path -> Add external JAR die datei “dropbox-sync-sdk-android.jar” eingebunden. Ist das so richtig bis hierher? Wenn ich jetzt wie auf der Seite beschrieben, folgendes mache:
dann öffnet die App sich garnicht und ich bekomme die meldung auf den Bildschirm “Applikation wurde angehalten”.
Woran kann das liegen? Muss ich die Jar datei anders einbinden? Danke sehr
EDIT:
habe gerade mal ein Example direkt von Dropbox geöffnet. Da sind Beispieldaten angegeben (man muss ja nen app-key und app-secret angeben). Wenn diese Beispieldaten drin sind, startet die example-app. Gebe ich aber meine eigenen Daten an, dann stürzt sie gleich ab oO Wie kann das denn sein? Ich hab mir sogar gerade noch einmal neue secret und key daten erzeugt.
Interessant. Ich habe davon leider keine Ahnung und weiß, ich muss mich informieren, aber kannst du mir in kurzer Zusammenfassung erzählen wie soetwas zu bewerkstelligen ist und wie genau das mit Android zusammenspielen würde? Bräuchte ich dazu einen Server (Hier zuhause ist das leider nicht zu bewerkstelligen), also sonen Free Webspace? Oder muss das was bestimmtes sein?
Vielen Dank,
PS:
Hat noch jemand eine Idee woran es liegen kann, dass ich mich mit meinem Key und meinem Secret nicht zu Dropbox verbinden kann?
[QUOTE=Unregistered]vielleicht daran das du zwar dein secret im source änderst aber nicht wie im beispiel auch im manifest
ansonsten ist es schon sehr komisch das du die examples zum laufen bekommst aber es nur daran scheitern soll das du halt deine daten eingibst[/QUOTE]
wie blöd kann man nur sein. Genau das war es. Tausend Dank! Ich versteh / verstand nicht, warum man den Key 2x angeben soll. Ich dachte ich kann mir sozusagen aussuchen ob ich ihn da oder da angebe. Also so klappt es!