HBCI4Java mit Android

toki

Betreff:

Re: HBCI4Java mit Android

 ·  Gepostet: 19.03.2012 - 15:37 Uhr  ·  #81856
Zitat geschrieben von SebastianM
Hallo,
ich habe mir jetzt die HBCI4Java Bibliothek unter Android nochmal genauer angeschaut und konnte das o.g. Problem lösen. Hab jetzt ein kleines Testprogramm zum Lesen meiner Kontoauszüge (HBCI-300) und Umsätze in Android am Laufen. Dabei sind folgende Probleme/Lösungen aufgetreten.

1. Ver-/Entschlüsselung des Passports in HBCIPassportPinTan.java mit Cipher funktioniert unter Android nicht so wie in einer jdk 1.6 Umgebung. Als Workaround habe ich einfach eine HBCIPassportMyPinTan.class ohne Verschlüsselung erstellt. Die Verschlüsselung werde ich dann wieder anschalten wenn meine Projektidee etwas reift 8)
2. Der im ersten Posting aufgezeigte Fehler "org.kapott.hbci.exceptions.NoSuchPathException: no syntax-element with path DialogInit.MsgHead.dialogid found" kommt daher, daß anscheinend der XML DOM Parser in Android die Entity Reference Nodes nicht so auflöst wie in der jdk Umgebung. Als "quick and dirty" Lösung kann man die Entities in den entsprechenden Dateien manuell auflösen. Das geht auch automatisiert z.B. als Task im build script. Schon werden die hbci Messages auch ohne Fehler erstellt.
Vorerst reicht mir diese Lösung. Vielleicht mache ich mir mal später nochmal die Mühe die Entitiy Reference Verarbeitung in Android weiter zu analysieren und hier ggf. ein Patch zu erstellen.
3. Zu guter Letzt kann man unter Android keine SSL Instanz erstellen sondern muss hier eine TLS-Instanz nutzen (in PinTanSSLSocketFactory.java)

So jetzt werde ich mir weiter Gedanken machen wie ich mein kleines Testprogramm zu einem interessanten Android Open Source Homebanking Programm entwickeln kann :roll:

Über Anregungen, Ideen oder Anforderungen würde ich mich sehr freuen.

Viele Grüße
Sebastian


Hallo Sebastian,

ich versuche das gleiche wie Du und stoße natürlich auch auf die gleichen Probleme. Leider habe ich erst jetzt diesen Beitrag entdeckt.

Beim Parsen der jeweiligen hbci.xml werden Fehler geworfen. Testweise habe ich die DTD Regeln aus der xml-datei gelöscht, dann funktionierte das parsen. Allerdings gibt's dann an späterer Stelle Fehler. Ich vermute, dass ich zunächst für ein korrektes (DOM) Document Object sorgen muss.

Könntest Du Deinen Satz etwas genauer erläutern:

Zitat

Als "quick and dirty" Lösung kann man die Entities in den entsprechenden Dateien manuell auflösen


Hast Du kein DOM gebildet und stattdessen etwas anderes benutzt?

vg,

Tobias

_Max_

Betreff:

Re: HBCI4Java mit Android

 ·  Gepostet: 06.03.2015 - 21:29 Uhr  ·  #115286
Hallo,
aktuell beschäftige ich mich ebenfalls mit dem Thema und habe natürlich die selben Probleme. Beim "Auflösen" der Entity Relations komme ich nicht weiter.
Könnt ihr mir da weiterhelfen?
@toki welche DTD Regeln hast du gelöscht? Ich kenne mich leider nur mit xsd files aus, nicht mit DTD.

Vielen Dank schonmal!

LG
Max

_Max_

Betreff:

Update

 ·  Gepostet: 21.03.2015 - 14:44 Uhr  ·  #115517
Hallo,

ich habe große Vortschritte mit der Portierung von HBCI4Java auf Android gemacht. Das Hauptproblem war vermutlich, dass die XML-Dateien für die jeweiligen Versionen in Iso-Latin-1 (oder was anderes, weiß ich gerade nicht mehr - jedenfalls nicht UTF-8) codiert sind. Android verwendet standardmäßig eine eigene DOM-Parser-Implementierung (Apache Harmony). Diese funktioniert anders als die Implementierung des normalen JDKs. Ein Workaround ist, die Dateien mit einer anderen API zu parsen und dann zu einem w3c.Document zu konvertieren.

Wenn ich meine Studienarbeit abgeschlossen habe werde ich meine gepatchte Version von HBCI4Java hier verlinken.

Dazu muss allerdings gesagt werden, dass HBCI4Java nicht für Onlinebanking auf Android geeignet ist. Durch das viele XML-geparse dauert es aktuell noch knapp 2 Minuten um auf einem Galaxy S4 Mini den aktuellen Kontostand abzufragen. Und das ist schon die optimierte Version, bei der ich viele teile vom XML-Parsing eliminiert habe (Durch abspeichern der Elemente in einer HashMap).

Beste Grüße
Max