2016-10-17 2 views
1

Я пытаюсь использовать библиотеку JPOS для упаковки/распаковки сообщений ISO8583-1987.JPOS распаковка работает пример

У меня проблема с форматом, и я не могу найти какой-либо пример в Интернете.

Может ли кто-нибудь дать мне пример работы с распаковкой шестнадцатеричного сообщения, потому что есть много примеров с сообщением ASCII, но это не то, что мне нужно.

Спасибо всем за ваше время & внимания

Julien

+0

Я не знаю, если МСС имеет метод распаковывать из шестнадцатеричной строки сообщения, но вы можете Исли написать некоторый метод 'hexaStringToAscci 'Я мог бы помочь вам в этом, если каждый байт представлен двумя шестнадцатеричными символами. – Nico

+0

Привет !!! Проблема в том, что все поля находятся в разных форматах, некоторые из них в char, другие - числа, другие - значения битмапа, я не думаю, что вы можете преобразовать все поля в значение ASCII. – julienasefth

+0

Да, вы правы. Вы можете преобразовать свою «шестнадцатеричную строку» в байтовый [] десятичный массив, после чего вы можете «распаковать» это значение. Если вы хотите, я мог бы ответить на примере этого преобразования. – Nico

ответ

2

Я предполагаю, что у вас есть шестигранная строка, представляющее сообщение в виде строки, в этом случае вы должны преобразовать его в массив байт.

Например, если у вас есть строка в качестве аргумента для вашего основного. В любом случае вы должны знать формат сообщения iso, содержащегося в этом шестнадцатеричном представлении. Например, если сообщение двоично, вам нужно выбрать ISO87BPackager, если это ascii, вам нужно выбрать ISO87APackager.

import org.jpos.iso.packager.ISO87BPackager; 
import org.jpos.iso.ISOException; 
import org.jpos.iso.ISOMsg; 
import org.jpos.iso.ISOUtil; 

public class ParseISOMsg { 
    public static void main(String[] args) throws ISOException { 
     String hexmsg = args[0]; 
     // convert hex string to byte array 
     byte[] bmsg =ISOUtil.hex2byte(hexmsg); 
     ISOMsg m = new ISOMsg(); 
     // set packager, change ISO87BPackager for the matching one. 
     m.setPackager(new ISO87BPackager()); 
     //unpack the message using the packager 
     m.unpack(bmsg); 
     //dump the message to standar output 
     m.dump(System.out, ""); 
    } 
} 

Например, если вы звоните java -cp .:jpos.jar ParseISOMsg 0800002000000080000 он должен напечатать:

<isomsg> 
    <!-- org.jpos.iso.packager.ISO87BPackager --> 
    <field id="0" value="0800"/> 
    <field id="11" value="123456"/> 
    <field id="41" value="12345678"/> 
</isomsg> 
Смежные вопросы