Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JPOS库打印iso-8583消息_Java_Iso8583_Jpos - Fatal编程技术网

Java 使用JPOS库打印iso-8583消息

Java 使用JPOS库打印iso-8583消息,java,iso8583,jpos,Java,Iso8583,Jpos,例如,如何在以下代码中打印打包的ISO消息 ISOMsg isoMsg = new ISOMsg(); isoMsg.setPackager(packager); isoMsg.setMTI("0200"); isoMsg.set(2, "16"); isoMsg.set(2, "5421287475388412"); isoMsg.set(3, "000000 "); isoMsg.set(4, "4

例如,如何在以下代码中打印打包的ISO消息

ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.setMTI("0200");
isoMsg.set(2, "16");
isoMsg.set(2, "5421287475388412");
isoMsg.set(3, "000000   ");
isoMsg.set(4, "400.0");
isoMsg.set(7, "0716070815");
isoMsg.set(11, "844515");

logISOMsg(isoMsg);

byte[] data = isoMsg.pack();
System.out.println("RESULT : " + new String(data));

如果您的意思是要逐字段打印消息,您可以看到本文中的文章

我在这里引用他的代码:

public class BuildISOMessage {

    public static void main(String[] args) throws IOException, ISOException {
        // Create Packager based on XML that contain DE type
        GenericPackager packager = new GenericPackager("basic.xml");

        // Create ISO Message
        ISOMsg isoMsg = new ISOMsg();
        isoMsg.setPackager(packager);
        isoMsg.setMTI("0200");
        isoMsg.set(3, "201234");
        isoMsg.set(4, "10000");
        isoMsg.set(7, "110722180");
        isoMsg.set(11, "123456");
        isoMsg.set(44, "A5DFGR");
        isoMsg.set(105, "ABCDEFGHIJ 1234567890");

        // print the DE list
        logISOMsg(isoMsg);

        // Get and print the output result
        byte[] data = isoMsg.pack();
        System.out.println("RESULT : " + new String(data));
    }

    private static void logISOMsg(ISOMsg msg) {
        System.out.println("----ISO MESSAGE-----");
        try {
            System.out.println("  MTI : " + msg.getMTI());
            for (int i=1;i<=msg.getMaxField();i++) {
                if (msg.hasField(i)) {
                    System.out.println("    Field-"+i+" : "+msg.getString(i));
                }
            }
        } catch (ISOException e) {
            e.printStackTrace();
        } finally {
            System.out.println("--------------------");
        }

    }

}

Hi如果要逐字段打印,最简单的方法是使用ISOMsg.dump()方法,在代码中可以是:

isoMsg.dump(Sytsem.out, "");
如果需要十六进制转储表示,可以在示例中使用ISOUtil.hextump()方法:

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

public class JposExamples {

    /**
     * 
     */
    public JposExamples() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @param args
     */
    public static void main(String[] args) throws ISOException{
        ISOMsg isoMsg = new ISOMsg();
        isoMsg.setPackager(new ISO87BPackager());
        isoMsg.setMTI("0200");
        isoMsg.set(2, "16");
        isoMsg.set(2, "5421287475388412");
        isoMsg.set(3, "000000");
        isoMsg.set(4, "400.0");
        isoMsg.set(7, "0716070815");
        isoMsg.set(11, "844515");
        byte[] data = isoMsg.pack();
        System.out.println(ISOUtil.hexdump(data));
    }
}
这将使用ISO87BPackager并打印:

0000  02 00 72 20 00 00 00 00  00 00 16 54 21 28 74 75  ..r .......T!(tu
0010  38 84 12 00 00 00 00 00  00 04 00 E0 07 16 07 08  8...............
0020  15 84 45 15                                       ..E.
如果改用ISO87APackager,则输出如下:

0000  30 32 30 30 37 32 32 30  30 30 30 30 30 30 30 30  0200722000000000
0010  30 30 30 30 31 36 35 34  32 31 32 38 37 34 37 35  0000165421287475
0020  33 38 38 34 31 32 30 30  30 30 30 30 30 30 30 30  3884120000000000
0030  30 30 30 34 30 30 2E 30  30 37 31 36 30 37 30 38  000400.007160708
0040  31 35 38 34 34 35 31 35                           15844515

希望这能回答您的问题。

如果您想打印原始邮件,这对我来说很有用:

ISOBasePackager-packager=new Reliance93APackagerBBitmap();
org.jpos.util.Logger jPosLogger=new org.jpos.util.Logger();
addListener(新的SimpleGlistener(System.out));

packager.setLogger(jPosLogger,“deb
我已经看过jimmy的博客了,生成位图有问题,我需要定制的ISOMsg,我怎样才能定制ISOMsg?如果你想要定制的ISOMsg结构,你可以试着用自己的packager实现,查看package[org.jpos.iso.packager]