Java 解包JPOS ISO 8583中的解包问题字段44

Java 解包JPOS ISO 8583中的解包问题字段44,java,iso,iso8583,jpos,Java,Iso,Iso8583,Jpos,我正在从客户端向服务器发送以下ISO消息。我正试图打开此邮件的包装 A4M080000200F638669128B0A00800000000064000A016434184******00330 300000000000000000000000000000011407380151599213291101146011050 051000091D000000000692900132434184******0033=2707201********000 00001355008NRBGUL01NRBB

我正在从客户端向服务器发送以下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包装商的定义如下:

我面临以下错误:

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();
        }

请帮助我如何解决此错误

您试图使用一个字符串来解压二进制图像,在该字符串中调用其
getBytes()
方法。请注意,根据您的编码(可能默认为UTF-8二进制数据),可能很容易损坏。在图像中使用
字节[]
。此外,您显示的转储文件没有hexdump,并且可能不包括不可打印的字符


查看有关转储的更多信息。

您可以共享消息变量的赋值吗?开始时的A4M看起来很奇怪,它应该以MTI 0800开始。从一开始就删除了“A4M08000”。我可以解析消息直到字段44,如您的示例所示。从字段44开始,您收到的内容和您的打包机之间存在一些不一致,字段长度为00,所以它是空的,这很奇怪,当字段长度为2时,您将该字段定义为LL也很奇怪。长度为25的IFA_字符似乎更合适。修改后的字段49和51看起来不错,但接下来的字段61、102和103看起来不错empty@AndrésAlcarraz,A4M08000是头球。它什么也不做。在解析之前,我删除这个头。那么我应该将字段44类型设置为长度为25的IFA_CHAR吗?那么这个问题会解决吗?我说在你收到的东西和你在打包机中定义的东西之间有一些不一致,我刚刚发现字段44的问题,但似乎还有更多。如果没有更多数据,我们无法完全回答您的问题。你知道你在每个领域都有哪些突出表现吗?i、 e.发送方在每个字段中发送什么?这将有助于缩小其余未对准问题。另外,在您的问题中建议标题也是一个好主意,我们a不是预见者,并且您没有将您正在设置的内容添加到消息中,这会澄清标题的内容。另外,如果_CHAR,我无意中添加了a。