Я отправляю следующее сообщение ISO с клиента на сервер. Я пытаюсь распаковать это сообщение.
A4M080000200F638669128B0A00800000000064000A016434184******00330
300000000000000000000000000000011407380151599213291101146011050
051000091D000000000692900132434184******0033=2707201********000
00001355008NRBGUL01NRBB DHAKA
000050HEAD OFFICE 9999
00120190114NRB
B NRBB 00000000000000001 050840NRB
BNRBB 1330110800680080810101001000000000000000000000000000
0007013157800000000001***
004TC=5
A4M08000 в начале сообщения - это заголовок, который я не передаю упаковщику.
Упаковщик ISO определяется следующим образом:
https://pastebin.com/DaEZrzk8
Я сталкиваюсь со следующей ошибкой:
org.jpos.iso.ISOException: org.jpos.iso.IFA_LLCHAR: Problem unpacking field 44 (java.lang.NegativeArraySizeException) unpacking field=44, consumed=429
at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:334)
at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:467)
at com.era.atm.UnpackISOMessage.parseISOMessage(UnpackISOMessage.java:36)
at com.era.socket.Processor.doProcessing(Processor.java:79)
at com.era.socket.Processor.run(Processor.java:43)
at java.lang.Thread.run(Thread.java:745)
at com.era.socket.Server.run(Server.java:64)
at java.lang.Thread.run(Thread.java:745)
Код выглядит следующим образом:
try {
InputStream is = UnpackISOMessage.class.getResourceAsStream("fields.xml") ;
GenericPackager packager = new GenericPackager(is);
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.unpack(message.getBytes());
return isoMsg;
} catch (ISOException ex) {
Logger.getLogger(UnpackISOMessage.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
Пожалуйста, помогите мне, как я могу решить эту ошибку?