java - 调用 pack() JPOS 时获取 NullPointerException

标签 java xml iso8583 jpos

我在 ISO 8583 工作。我使用 JPOS 来解析和反解析 ISO 消息。 但是,当我解析消息时,出现以下错误:

java.lang.NullPointerException
    at org.jpos.iso.ISOBasePackager.pack(ISOBasePackager.java:94)
    at org.jpos.iso.ISOMsg.pack(ISOMsg.java:442)
    at com.sti.payment.postpaid.service.TransactionService.response(TransactionService.java:76)
    at com.sti.payment.postpaid.App.main(App.java:35)

错误指向:

byte [] bIsoMsg = isoMsg.pack();

这是我的代码:

public void response(String responseMessage) throws Exception {
    // TODO Auto-generated method stub
    GenericPackager packager = new GenericPackager("de-payment-request.xml");

    // Buat ISO Messagenya
    ISOMsg isoMsg = new ISOMsg();
    isoMsg.setPackager(packager);
    isoMsg.setMTI("0210");
    isoMsg.set(1, "723A40010A818000");
    isoMsg.set(2, "162333444455556666");
    isoMsg.set(3, "380099");

    byte [] bIsoMsg = isoMsg.pack();
}

这是我的 XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE isopackager SYSTEM "genericpackager.dtd">
<isopackager>
  <isofield
    id="1"
    length="64"
    name="BIT MAP"
    class="org.jpos.iso.IFA_BITMAP"
  />
  <isofield
    id="2"
    length="16"
    name="PRIMARY ACCOUNT NUMBER"
    class="org.jpos.iso.IFA_LLNUM"
  />
  <isofield
    id="3"
    length="6"
    name="PROCESSING CODE"
    class="org.jpos.iso.IFA_NUMERIC"
  />
</isopackager>

我错过了什么? 非常感谢。

最佳答案

位图字段(数据元素 1)由 jPOS 自动处理,因此您不必调用:

isoMsg.set(1, "723A40010A818000");

当您设置字段 1 时,jPOS 认为有些字段实际上未配置,这就是您获得 NPE 的原因,很可能是 here (取决于您的版本)。

关于java - 调用 pack() JPOS 时获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336408/

相关文章:

java - 当我的闹钟触发 onReceive() 时,通知未显示

java - 更改 ImageView 大小

java - java中按值传递与按引用传递

java - Android 中的 SAX XML 解析

iso8583 - iso8583授权请求和授权建议请求之间的区别

java - 如何获取发送到 JMETER 中 ISO8583 采样器服务器的字节数组?

java - J8583:ISO8583 MessageFactory 没有消息类型 0800 的解析指南

java - spectj 切入点 - 拦截来自 javax.swing 内部的调用

c++ - Qt XML 继承

java - 尝试使用 2 个不同的按钮打开 2 个不同的 xml 页面