Problem bei Kontostandsabfrage in Java via hbci4java

Passport-Daten im Quellcode

 
maps
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: 07 / 2013
Betreff:

Problem bei Kontostandsabfrage in Java via hbci4java

 · 
Gepostet: 04.07.2013 - 16:09 Uhr  ·  #1
Hallo,

ich habe hier im Forum bereits vergebens nach einer Lösung für mein Problem gesucht.

Mein Ziel ist in Java die Verbindung zu meiner Bank (Postbank) herstellen und den Kontostand meines Kontos abfragen zu können.

Ich möchte die Verbindung via PinTan-Methode herstellen und die notwendigen Daten für den Passport direkt im Quellcode setzen. Dazu bin ich hier im Forum auch schon fündig geworden: hbci4java ohne passport.
Ich bin wie in dem Thread beschrieben vorgegangen. Allerdings bekomme ich beim Aufrufen der getInstance-Methode eine NullPointer-Exception. Durch Debuggen habe ich herausgefunden, dass die Klasse "HBCIPassportXYZ" nicht gefunden wurde.

Hat jemand Erfahrungen damit und weiß, warum die Kontostandsabfrage nicht funktioniert?

Nachfolgend der Quellcode:


Code

package org.kapott.hbci.passport;

public class HBCIPassportXYZ extends HBCIPassportPinTan {

  public HBCIPassportXYZ(Object init, int dummy) {
    super(init);
  }

  public HBCIPassportXYZ(Object initObject) {
    this(initObject, 0);
    this.setHost("hbci.postbank.de/banking/hbci.do");
    this.setHBCIVersion("HBCI+");
    this.setFilterType("Base64");
    this.setUserId("KontoNr.");
    this.setPIN("PIN");
    this.setBLZ("BLZ");
    this.setPort(new Integer(443));
    this.setProxy("");
    this.setCountry("DE");
    this.setCheckCert(false);
    this.setProxyUser("");
    this.setProxyPass("");
    this.setCustomerId("KontoNr.");
  }

  public void saveChanges() {
    // nichts mehr tun lassen
  }
}


Code

import org.kapott.hbci.GV.HBCIJob;
import org.kapott.hbci.manager.HBCIHandler;
import org.kapott.hbci.passport.AbstractHBCIPassport;
import org.kapott.hbci.passport.HBCIPassport;
import org.kapott.hbci.status.HBCIExecStatus;

public class hbciTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    try {
      HBCIPassport passport = AbstractHBCIPassport.getInstance("XYZ");
      HBCIHandler handle = new HBCIHandler(passport.getHBCIVersion(),
          passport);

      HBCIJob jobSaldo = handle.newJob("SaldoReq");
      jobSaldo.setParam("number", "KontoNr.");
      jobSaldo.addToQueue();
      HBCIExecStatus status = handle.execute();

      handle.close();
    } catch (final NullPointerException e) {
      e.printStackTrace();
    }
  }
}


Vorab schon mal Danke für jede Art der Hilfe!


Gruß
maps
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10883
Dabei seit: 03 / 2005
Betreff:

Re: Problem bei Kontostandsabfrage in Java via hbci4java

 · 
Gepostet: 04.07.2013 - 23:35 Uhr  ·  #2
Wenn deine Klasse nicht gefunden wird, sollte aber eher eine ClassNotFoundException fliegen. Daher denke ich, dass die Ursache eher eine andere ist. Poste doch mal den kompletten Stacktrace deiner Exception.
maps
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: 07 / 2013
Betreff:

Re: Problem bei Kontostandsabfrage in Java via hbci4java

 · 
Gepostet: 05.07.2013 - 09:35 Uhr  ·  #3
Hallo,

Danke schon mal für deine Antwort!

Hier der StackTrace:

Code

java.lang.NullPointerException
  at org.kapott.hbci.manager.HBCIUtilsInternal.getLocMsg(HBCIUtilsInternal.java:89)
  at org.kapott.hbci.manager.HBCIUtilsInternal.getLocMsg(HBCIUtilsInternal.java:99)
  at org.kapott.hbci.manager.HBCIUtilsInternal.getLocMsg(HBCIUtilsInternal.java:94)
  at org.kapott.hbci.passport.AbstractHBCIPassport.getInstance(AbstractHBCIPassport.java:727)
  at org.kapott.hbci.passport.AbstractHBCIPassport.getInstance(AbstractHBCIPassport.java:750)
  at hbciTest.main(hbciTest.java:20)



Gruß
maps
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10883
Dabei seit: 03 / 2005
Betreff:

Re: Problem bei Kontostandsabfrage in Java via hbci4java

 · 
Gepostet: 05.07.2013 - 09:46 Uhr  ·  #4
Der Fehler kommt nicht, weil dein Passport nicht gefunden wird, sondern weil HBCI4Java noch gar nicht initialisiert ist. Bevor du ein AbstractHBCIPassport.getInstance() machen kannst, musst du das ganze System erst initialisieren - sonst hat HBCI4Java ja auch gar keinen Callback, ueber den es mit dem Nutzer interagieren kann:

Code

Properties props = new Properties();
props.put("log.loglevel.default",Integer.toString(HBCIUtils.LOG_DEBUG2));
// weitere Properties bei Bedarf gemaess http://hbci4java.kapott.org/javadoc/org/kapott/hbci/manager/HBCIUtils.html setzen
HBCIUtils.init(props,new HBCICallbackConsole());
maps
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 3
Dabei seit: 07 / 2013
Betreff:

Re: Problem bei Kontostandsabfrage in Java via hbci4java

 · 
Gepostet: 05.07.2013 - 13:09 Uhr  ·  #5
Hallo,

Danke für deine Hilfe hibiscus! Jetzt funktioniert die Kontostandsabfrage!!!

Es traten noch ein paar andere Fehler auf,


1. z.B. musste ich die Properties-Dateien [HBCIMessages.properties] und [blz.properties] sowie die [hbci-HBCI+.xml] in den Workspace kopieren.

2. Außerdem habe ich im Konstruktor von [HBCIPassportPinTan(Object initObject)] den Quellcode bis auf die erste Zeile [this(initObject,0);] auskommentieren müssen.

3. Beim Job musste ich die Parameter [my.number] und [my.blz] setzen.


Vielen Dank nochmal für deine Hilfe hibiscus!!!


Gruß
maps
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10883
Dabei seit: 03 / 2005
Betreff:

Re: Problem bei Kontostandsabfrage in Java via hbci4java

 · 
Gepostet: 05.07.2013 - 14:20 Uhr  ·  #6
Zitat geschrieben von maps
1. z.B. musste ich die Properties-Dateien [HBCIMessages.properties] und [blz.properties] sowie die [hbci-HBCI+.xml] in den Workspace kopieren.


Nimm besser die hbci4java.jar
Dort sind die properties- und xml-Dateien direkt enthalten.

Zitat geschrieben von maps
Beim Job musste ich die Parameter [my.number] und [my.blz] setzen.


Ja, sonst weiss HBCI4Java nicht, fuer welches Konto die Umsaetze abgerufen werden sollen. Einem Bankzugang koennen ja mehrere Konten zugeordnet sein.
Gewählte Zitate für Mehrfachzitierung:   0