Serververbindung mit Android

  • 13 Antworten
  • Letztes Antwortdatum
G

Gandalf the Grey

Gast
Folgendes Problem.

Ich möchte ein XML Datei von einem Webserver beziehen. Wie greife ich auf den Server zu und lade die Datei?
 
Zuletzt bearbeitet von einem Moderator:
Ja, ich würde da einfach ne App schreiben die die aufgezählten Schritte abarbeitet ;-)

Hast du denn überhaupt schon mal programmiert? Weil das sollte man erstmal lernen bevor man Apps schreibt.

Weil ich vermisse hier ne konkrete Frage.
Teile das Projekt in einzelne einfache und überschaubare Schritte auf und programmiere sie dann Schritt für Schritt.

cu
 
Zuletzt bearbeitet:
zu Frage "Schon mal programmiert?" -> ich glaube, JA (C++, C# und JAVA) neu in Android!
zu Tip 1: Schritte abprogrammieren -> danke so weit bin ich selbst


OK konkrete Frage (wenn für Dich nicht verständlich, auf unqualifizierte Kommentare und Klugscheisserei bitte verzichten. Danke).

Wie lese ich eine XML auf dem Server aus und transferiere die Daten zur Weiterverarbeitung auf das Device?
 
Zuletzt bearbeitet von einem Moderator:
Verbindung zu Server aufbauen -> Runterladen -> Weiterverarbeiten ^^
 
Gandalf the Grey schrieb:
OK konkrete Frage (wenn für Dich nicht verständlich, auf unqualifizierte Kommentare und Klugscheisserei bitte verzichten. Danke).

Die Frage ist schon verständlich.
Nur eine gute Antwort gibt es darauf nicht.
Weil wir absolut nicht wissen wie dein Wissenstand ist.

Hast du schon mal gegoogelt?
Android - how to download file from webserver - Stack Overflow

Da finden sich bestimmt tausend tutorials wie man eine Datei von einem Webserver läd.

z.B: auch direkt auf der Android Developer Seite:
Connecting to the Network | Android Developers
 
ja ich hab den Gockel befragt, ergebnislos. Die war der Grund diese Plattform hier zu bemühen.
Was hat Wissensstand mit einer Antwort zu tun? Sollte jemand etwas nicht verstehen, kann er nachfragen.

Wie geschrieben, ich habe Erfahrung mit C++, C# und Java, aber kaum mit Webentwicklung, war die ganze Zeit im Desktopbereich beheimatet. Jetzt muss ich Android-Apps schreiben.

Aber trotzdem Danke für die tolle Hilfe. Ist echt empfehlenswert hier her zu kommen.
 
Hallo Gandalf,

die meisten hier können gut bis sehr gut unter Android programmieren. Dementsprechend können Sie auch gut erklären und hilfestellungen geben.
Nur wird es schwierig Hilfe zu geben, wenn man nicht weiß, wie dem zu helfenden zu helfen ist. Du schreibst das du schon mal in Java Programmiert hast. Schön! Kennst du dich mit Konsolenprogrammen gut aus? Schon mal eine GUI geschrieben? Schon mal ein Game geschrieben? Schon mal was über das Netzwerk (Internet) gemacht?!
All diese Informationen fehlen!

Auch aussagen wie diese
Bitte keine unqualifizierten Kommentare oder schnippische Hinweise auf irgendwelche Links oder Android API. Wäre ich fündig geworden, würde ich diese Plattform nicht bemühen.
Kannst du dir sparen. Wir wissen eben nicht wie weit du bist. Wenn du null Plan von Android hast, ist es verständlich dass du nichts gefunden hast. Bzw. schon was gefunden hast aber anscheinend nur Bahnhof verstanden...

Also als erstes ein paar Fragen beantworten:
Kennst du eclipse?
Kennst du Android Studio?
Weißt du was eine Activity ist?
Weißt du was Thread bzw Task ist?
Weißt du was HttpURLConnection ist?

Dann können wir weiter aufbauen.

Gruß
 
Ja aber davon hängt es ab wo man bei der Erklärung anfangen muss ;)
Netzwerk Zeug muss bei Android z.B. in einen eigenen Thread.

Je nach Wissensstand reicht es evtl dir das zu sagen oder aber ich muss auch noch extra Informationen zu Threads verlinken und/oder erst mal erklären was Threads überhaupt sind.

Du sagst ja du kannst Java, je nach Kentniss stand hättest du dann ja erst mal mit diesen Kenntnissen einen ganz normalen Dateidownload in Java schreiben können. den du dann in Android nutzt.
Denn ein Großteil der Android Java ist gleich wie die von Java
Beispielsweise:
HttpURLConnection
Gibts unter Android ist aber auch eine ganz normale Java Klasse.
Nutzt man genau gleich.


StefMa schrieb:
die meisten hier können gut bis sehr gut unter Android programmieren.

Sagen wir, die meisten die hier Antworten ;)
Definitiv nicht die meisten die hier so Fragen stellen :D
 
Um hier mal eine Lanze für Gandalf zu brechen. In diesem Forum gibt sehr viele Leute die eine dreistellige Zahl an Posts verfasst haben die alle etwa folgenden Inhalt haben "Google das doch"...

also hier mal mein Code für einen Dateidownload, er darf gerne verwendet werden. Die JavaDoc Kommentare sollten ausreichen um ihn zuverstehen:

Code:
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Environment;
import android.widget.Toast;
/**
 * Lädt eine Datei über HTTP und speichert sie in AppDaten 
 * Läuft in einem eigenen Thread.
 * Es empfiehlt sich vor dem Aufruf mittels ConnectivityManager zu prüfen, ob eine Internetverbindung besteht.
 * Aufruf erfolgt in den meisten Fällen so:<br>
 * new DownloadFileActivity(this).execute("[URL]http://DummyURL/","dateiname.endung[/URL]");
 * Falls die Aufrufende activity nach dem Download noch etwas ausführen soll, muss sie das Interface DownloadAbgeschlossen implementieren
 * @author Thomas
 * @version 14.03.2014
 */
public class DownloadFileActivity extends AsyncTask<String, String, String> {
 private InputStream inputStream = null;
 private FileOutputStream fileOutput = null;
 private String status;
 private Context context;
 /**
  * 
  * @param context wird für die Toast Benachrichtigungen gebraucht
  */
 
 
 public DownloadFileActivity(Context context) {
  super();
  this.context = context;
 }
 @Override
 protected String doInBackground(String... params) {
  try {
   // HTTP Verbindung zur URL aus params[0] herstellen
   publishProgress("Download gestartet");
   URL url = new URL(params[0]);
   HttpURLConnection urlConnection = (HttpURLConnection) url
     .openConnection();
         urlConnection.setReadTimeout(10000) ;
         urlConnection.setConnectTimeout(15000);
   urlConnection.setRequestMethod("GET");
   urlConnection.setDoOutput(true);
   urlConnection.connect();
   //Dateipfad prüfen und ggf. anlegen
   File pfad = new File(Environment
     .getExternalStorageDirectory().getPath() + "/AppDaten/");
   if (!pfad.exists())
   {
    pfad.mkdir();
   }
   // Dateiname Festlegen Input- und Outputstream vorbereiten
   File file = new File(pfad,params[1]);
   fileOutput = new FileOutputStream(file);
   inputStream = urlConnection.getInputStream(); 
   //Download
   byte[] buffer = new byte[1024];
   int bufferLength = 0;          
   while ((bufferLength = inputStream.read(buffer)) > 0) {
    fileOutput.write(buffer, 0, bufferLength);
   }
   status = "Download erfolgreich abgeschlossen";
  } catch (Exception e) {   
   status = "Download fehlgeschlagen";
   publishProgress(status);
  } 
  finally {
   try {
    // Streams beenden
    fileOutput.close();
    inputStream.close();
   } catch (Exception e) {
    status = "Download fehlgeschlagen";
   }
  }  
  return status;
 }
 protected void  onProgressUpdate (String... values) {
  Toast.makeText(context, values[0], Toast.LENGTH_SHORT).show();
 }
 
 @Override
 protected void  onPostExecute (String result) {
  Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
  if(context instanceof DownloadAbgeschlossen) {
   ((DownloadAbgeschlossen)context).downloadloadAbgeschlossen();
  }
 }
}

und noch das Interface

Code:
[SIZE=3][FONT=Times New Roman]public interface DownloadAbgeschlossen {
public void downloadloadAbgeschlossen();
}[/FONT][/SIZE]
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: amfa
Naja, man muss aber auch nicht immer alles erklären, was anderswo schon super erklärt ist ;)

Und ich bin kein Freund davon einfach irgendjemand Code vorzuwerfen.
Ich möchte das die Leute verstehen was sie tun, denn ich kenn das von mir selber auch beruflich.
Wie oft sitzt man vor schon vorhandenem Code weiß aber nicht wirklich was dieser Code wie macht.
Natürlich kann man sein eigenens Problem dann trotzdem irgendwie lösen, ich finde das aber unbefriedigend UND wenn das nächte ähnliche Problem auftritt, weiß man wieder nicht wie's richtig geht.

Und (ohne dass das gegen Gandalf geht) seine Ursprungsfrage war nun mal ziemlich offen.
Sein erster Post im Forum, da kann man sich schon mal die Frage stellen wie sein Wissensstand ist eben um zu wissen ob es reicht ihn auf bestimmte Klasse hinzuweisen oder aber ob man größer ausholen muss um das zu erklären.
 
kosmus schrieb:

Hab deinen Ansatz auch schon oft im google gefunden, jedoch hab ich immer nicht verstanden warum für sowas nicht der DownloadManager verwendet wird?

Hab ich durch deinen Ansatz irgendwelche Vorteile die ich jetzt mit dem Manager nicht habe? Mir kam das immer vor wie der "Zu Fuß Weg".
 
das kann ich dir leider nicht sagen, da dieser Ansatz für meine Zwecke bisher immer ausgereicht hat, hab ich mich nie mit DownloadManager beschäftigt
 
Wenn ich das richtig sehe kannst du mit dem DownloadManager Dateien nur in den öffentlichen Ordner runterladen.
Das ist ja meistens nicht gewollt.
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.232
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
925
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
972
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
753
mkuz24
M
A
Antworten
5
Aufrufe
674
swa00
swa00
Zurück
Oben Unten