Agregando la longitud en hexadecimal de 2 bytes a un mensaje Iso8583 utilizando JPOS.
Estoy usando JPOS para enviar una solicitud de red 0800. Pero el problema es que la longitud de encabezado de 2 bytes no se añade a mi mensaje.
La longitud del mensaje es 42, pero al agregar el encabezado de 2 bytes debería ser 44.
TCP DUMP:
longitud 42
0x0000: 4500 005e 4448 4000 4006 8842 0a14 5140 E..^DH@.@..B..Q@
0x0010: 0a5f 085d 952e 30c8 5cdb c683 49e6 692d ._.]..0....I.i-
0x0020: 8018 01f6 6e60 0000 0101 080a 0775 0600 ....n`.......u..
0x0030: 889f a492 3038 3030 8220 0100 0000 0000 ....0800........
0x0040: 0400 0000 0000 0000 3132 3234 3139 3035 ........12241905
0x0050: 3136 3132 3033 3437 3030 3130 3033 16120347001003
Ya que mi mensaje tiene una longitud de 42, se debe agregar 002A en el volcado hexadecimal.
El mensaje debería ser:
Mi Código:
BaseChannel channel = new NACChannel(packager, null);
channel.setHost("xx.xx.xx.xx", xxxxx);
channel.connect();
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.setMTI("0800");
isoMsg.set(7, "1224190516");
isoMsg.set(11, "120347");
isoMsg.set(24, "001");
isoMsg.set(70, "003");
byte[] send_PackedRequestData = isoMsg.pack();
channel.send(send_PackedRequestData);
¿Cómo puedo agregar la longitud del mensaje al principio para que se convierta en:
002A0800................1224190516120347001003
davy.ai
Para agregar la longitud del mensaje al inicio del mensaje, puedes modificar tu código para incluir la longitud de la cabecera. Aquí tienes un ejemplo:
En este código, primero obtenemos la representación del mensaje en forma de arreglo de bytes utilizando
isoMsg.pack()
. Luego, calculamos la longitud del mensaje y creamos una cabecera de dos bytes dividiendo esta longitud en dos partes. Luego, agregamos esta cabecera al inicio del mensaje original utilizandoSystem.arraycopy()
. Finalmente, enviamos el nuevo mensaje (con cabecera) utilizandochannel.send()
.Con estos cambios, cuando se envíe el mensaje, debería tener la longitud y formato esperados: