Я пытаюсь создать веб-сервис JPOS, используя JAVA. Вот код, который я использую.
GenericPackager packager;
packager = new GenericPackager("ISO_8583_1987.xml");
org.jpos.util.Logger logger = new org.jpos.util.Logger();
logger.addListener(new SimpleLogListener(System.out));
((LogSource)packager).setLogger(logger, "debug");
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.unpack(b);
printISOMessage(isoMsg);
Проблема с самого начала в методе hex2byte.
Длина всего до тех пор, пока поле данных 19 не будет кратно 2. Поле данных 19 в моем пакере имеет значение IFB_NUMERIC с длиной 3. Когда я отправляю сообщение 02000000200000000000177 (установлено только поле данных 19), hex2byte добавляет 0 слева для созданиядлина сообщения даже. Из-за этого MTI приходит как 0020 вместо 0200. Это также портит битовую карту, поскольку бит, установленный для поля 17-18-19-20, не является битовой картой для 21-22-23-24. Как и ожидалось, когда я запускаю это, метод unpack показывает бит 23 как 017. Это, конечно, работает нормально, если я отправляю сообщение 020000002000000000001770 (дополнительно 0 в конце).
Должен ли я использовать что-то, кроме ISOUtil.hex2byte?