Laden...

HBCI - Einstellung der Binären Daten

Erstellt von Sythus vor 11 Jahren Letzter Beitrag vor 11 Jahren 742 Views
S
Sythus Themenstarter:in
166 Beiträge seit 2009
vor 11 Jahren
HBCI - Einstellung der Binären Daten

Hallo zusammen,

ich kann mir vorstellen das eine spezifische Frage zu HBCI etwas zu schwer zu beantworten wäre, und stelle diese deshalb etwas allgemeiner.

Bei HBCI gibt es das Datenformat Binär.

Dieses wird in die Textnachrichten die zwischen Kunde und Kreditinstitut versendet werden folgendermaßen eingestellt.

@Länge-Bytes@Binäre-Daten

Die Nachrichten an einen Bankserver werden base64 kodiert und dann per SSL versendet.
Ich frage mich nun, wie die Binären Daten in C# in die Nachricht eingestellt werden?

Wandel ich die "Strings" in ein Byte-Array um und setze sie einfach in den String ein? Oder als eine Folge von 1en und 0en?

Wie könntet Ihr euch vorstellen funktioniert das in c#? Die Spezifikation gibt mir die Antwort leider nicht.

Den String in Bytes zu konvertieren und mitzugschicken, führt zu einem 400er Returncode.

Vielen dank für jede Idee

Sythus

S
417 Beiträge seit 2008
vor 11 Jahren

Hallo,

wie sieht denn deine Lösung aus (quelltext)?
Sollte in etwa so funktionieren (ungetestet):

List<byte> binaryContent = ...; // deine binären Daten
binaryContent.Insert(0, Encoding.GetBytes("@" + binaryContent.Count + "@")); // länge vorne anfügen
var base64Message = Convert.ToBase64String(binaryContent.ToArray());

Diesen string sendest du dann an den server.

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Sythus,

grundsätzlich wird es wohl auf Encoding.GetBytes hinauslaufen. Allerdings ist es nicht nur wichtig, das richtige, also in der Spezifikation vorgegebene Encoding zu verwenden, sondern auch alle anderen Anforderungen des binären Formats müssen eingehalten werden.

So kann ich mir vorstellen, dass Strings eine bestimmte Längen nicht überschreiten dürfen und möglicherweise bis zu einer bestimmten, festen Länge mit Füllzeichen (z.B. Spaces oder Null-Bytes) aufgefüllt werden müssen.

Vielleicht ist auch eine feste Anzahl von "Länge-Bytes" vorgegeben und die Länge-Bytes müssen vermutlich die Länge der Binären-Daten in Bytes angeben, was je nach Encoding von der Stringlänge abweichen kann.

An deiner Stelle würde ich erstmal nach dem genauen Fehlercode und den dafür beschriebenen Ursachen forschen.

herbivore