Android Netzwerk - Objekte senden

T

Tomate_Salat

Gast
Hi,

für mein aktuelles Projekte, will ich einen Android-Clienten schreiben. Ich habe ein wenig rumgespielt und festgestellt: Android lässt nur einfache Datentypen zu (Strings z.B.). Eigene Objekte lassen sich nicht empfangen, zumindest anscheinend nicht über den ObjectInputStream.
derzeit durchfoste ich HttpClient (von apache), ob dieses mir möglichkeiten bietet ... schaut aber momentan eher schlecht aus.

Ist mein vorhaben auf Android überhaupt möglich oder soll ich mit einer Lösung arbeiten, die auf Strings basiert?

MFG

Tomate_Salat
 
T

Tomate_Salat

Gast
auf den bin ich auch schon gestoßen und er hat eigentl. keine Infos, die mir nicht schon bekannt wären. Eigentl. habe ich nicht besonders viel Hoffnungen darauf, dass das mit den Objekten gehen wird, würde mir aber evtl. einiges vereinfachen :)
 
T

tuxedo

Gast
[dumme frage]Hast du das mit dem Package-Namen schon berücksichtig?[/dumme frage]

Hast du eine vordefinierte SerialVersionUID gesetzt?
Gibts eigetlich RMI auf dem Android?
Da SIMON auf MINA aufbaut, und MINA schon mit Android funktioniert (hab ich zumindest gelesen), sollte SIMON prinzipiell auch mit Android funktionieren. SIMON serialisiert die Objekte nicht explizit mittels ObjectOutputStream geschickt, sondern MINA regelt das (putObject() auf dem IoBuffer von MINA). Ob da nun intern doch wieder der OOS läuft, oder ein anderes Verfahren, kann ich dir nicht sagen. Aber ausprobieren kann man's ja mal.

- Alex

[update]
Noch eine Idee:

Wenn serialisieren nicht geht: Probier "externalize", Abschnitt 6. --> Serialisieren von Objekten
Aber ich vermute das würde eine ClassNotFoundException nicht wirklich verhindern.

[update2]
Hab doch mal in den MINA Source geschaut:

Java:
/**
     * {@inheritDoc}
     */
    @Override
    public IoBuffer putObject(Object o) {
        int oldPos = position();
        skip(4); // Make a room for the length field.
        try {
            ObjectOutputStream out = new ObjectOutputStream(asOutputStream()) {
                @Override
                protected void writeClassDescriptor(ObjectStreamClass desc)
                        throws IOException {
                    if (desc.forClass().isPrimitive()) {
                        write(0);
                        super.writeClassDescriptor(desc);
                    } else {
                        write(1);
                        writeUTF(desc.getName());
                    }
                }
            };
            out.writeObject(o);
            out.flush();
        } catch (IOException e) {
            throw new BufferDataException(e);
        }

        // Fill the length field
        int newPos = position();
        position(oldPos);
        putInt(newPos - oldPos - 4);
        position(newPos);
        return this;
    }

Hier wird der ClassDescriptor selbst geschrieben und nicht der OOS Klasse überlassen. Vielleicht hilft das bei der Serialisierung von Android->J2SE?
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
[dumme frage]Hast du das mit dem Package-Namen schon berücksichtig?[/dumme frage]
Jup. Sowohl Server als auch Client verwenden ein Objekt, welches in einem 3ten Projekt definiert wurde.

Hast du eine vordefinierte SerialVersionUID gesetzt?
nein
Gibts eigetlich RMI auf dem Android?
nein

Da SIMON auf MINA aufbaut, und MINA schon mit Android funktioniert (hab ich zumindest gelesen) [...] Aber ausprobieren kann man's ja mal.
Das wäre perfekt, wenn das funktionieren wird, werde ich mal Testen.

Wenn serialisieren nicht geht: Probier "externalize", Abschnitt 6
Das serialisieren klappt schon, nur empfangen darf ich anscheinend die objekte nicht. Aber raussenden hat glaube ich funktioniert (test ist schon ein paar tage her). Ich schau mir nochmal die 20.000.000 permissions an, die man setzen kann. Aber im Falle vom Netzwerkzugriff hatte ich eine schöne "permission denied"-Meldung bekommen, was hier nicht der fall ist ;(

Hab doch mal in den MINA Source geschaut:Hier wird der ClassDescriptor selbst geschrieben und nicht der OOS Klasse überlassen. Vielleicht hilft das bei der Serialisierung von Android->J2SE?
Wäre super, ein RMI wäre mir das liebste und dann könnte ich ja, wie von dir bereits erwähnt SIMON einsetzen.
 
T

tuxedo

Gast
Hab auch ein Android-Smartphone da. D.h. ich könnte da bei bedarf auch debuggen/testen. Aber ich bin in der Android-Entwicklungsgeschichte noch nicht sonderlich fit. Aber wenn du da Hilfe brauchst in bezug auf SIMON kann ich dir da sicher weiterhelfen.

- Alex
 
T

Tomate_Salat

Gast
Nein scheint auch nicht zu funktionieren. Recherchen bringen mich zu dem ergebnis: Ich muss echt mit XML,JSON oder JOSParser arbeiten. Naja, ich denke, ich werde mich für mein eigenes Protokoll entscheiden (und diesem iwann mal Arrays und Collections beibringen).
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
Update: anscheinend kann man nur Objekte empfangen, die die Api kennt. Ich konnte z.B. einen publickey einer RSA-Verschlüsselung auf Android empfangen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Netzwerk Verbindungen Java Android Android & Cross-Platform Mobile Apps 107
L Android Datei Übertragung im Netzwerk Android & Cross-Platform Mobile Apps 8
P Android Programm stürzt ab - Es geht um Netzwerk Android & Cross-Platform Mobile Apps 5
P Daten bzw Objekte auf das Handy lokal speichern Android & Cross-Platform Mobile Apps 29
M App Programmierung: Thread starten und Variablenwerte oder Objekte mitgeben Android & Cross-Platform Mobile Apps 2
W Android Bestimmen von welchem Typ die Objekte in einem ArrayAdapter sind Android & Cross-Platform Mobile Apps 3
F Bei einer Android Java App, Objekte erstellen Android & Cross-Platform Mobile Apps 2
Bastifantasti Java ME Objekte in Java? Android & Cross-Platform Mobile Apps 3
B Android Text von Android zu PC senden? Android & Cross-Platform Mobile Apps 5
B Android Dateien senden von assets Ordner? Android & Cross-Platform Mobile Apps 7
M Notification nicht mehr senden nachdem sie geklickt wurde Android & Cross-Platform Mobile Apps 0
B Android Mehrer Hexwerte über outputstream senden, und empfangen (Bluetoth) Android & Cross-Platform Mobile Apps 9
G String an einen php Script senden Android & Cross-Platform Mobile Apps 8
B Senden via Dialog? Android & Cross-Platform Mobile Apps 6
G Datei erzeugen, per E-Mail senden Android & Cross-Platform Mobile Apps 5
M Inhalt eines Eingabefeldes an einen Server senden? Android & Cross-Platform Mobile Apps 9
F Pc Screenshot an iPhone senden Android & Cross-Platform Mobile Apps 2
S DTMF-Töne über MIDlet senden Android & Cross-Platform Mobile Apps 3
G SMS senden - zulassen oder nicht Android & Cross-Platform Mobile Apps 3

Ähnliche Java Themen

Neue Themen


Oben