如何查看从我的终端发送到服务器的原始消息?
最简单的方法是扩展您的通道并从其发送和接收方法中执行 hexdump。
这是一个简单的测试代码,它将创建一个客户端和服务器,发送和接收带有标头的消息。您将看到输出包含已发送的标头定义。一旦你得到它,通过部署将它转移到第二季度的做事方式应该可以工作。
将打包程序替换为您在代码中使用的内容。确保您的打包程序 xml 中没有标头属性。将标头添加到您的客户端通道适配器部署。
import java.io.IOException;
import org.jpos.iso.ISOChannel;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISORequestListener;
import org.jpos.iso.ISOServer;
import org.jpos.iso.ISOSource;
import org.jpos.iso.ServerChannel;
import org.jpos.iso.channel.ASCIIChannel;
import org.jpos.iso.packager.GenericPackager;
import org.jpos.util.Logger;
import org.jpos.util.SimpleLogListener;
import org.jpos.util.ThreadPool;
public class Test {
public static void main(String[] args) throws IOException, ISOException {
Logger l = new Logger();
l.addListener(new SimpleLogListener());
GenericPackager serverPkg = new GenericPackager(
"C:\\temp\\iso93asciiB-custom.xml");
serverPkg.setLogger(l, "Server"); // So that the output can be differentiated based on realm
GenericPackager clientPkg = new GenericPackager(
"C:\\temp\\iso93asciiB-custom.xml");
clientPkg.setLogger(l, "Client");// So that the output can be differentiated based on realm
// Simulate a server and listen on a port
ISOChannel serverChannel = new ASCIIChannel(serverPkg);
((ASCIIChannel) serverChannel).setHeader("ISO70100000");
// AN equivalent in your channel adaptor deploy file would be
// <channel class="org.jpos.iso.channel.ASCIIChannel"
// packager="org.jpos.iso.packager.GenericPackager"
// header="ISO70100000"> .....
// This is evident from the ChanelAdaptor code
// QFactory.invoke (channel, "setHeader", e.getAttributeValue ("header"));
((ASCIIChannel) serverChannel).setLogger(l, "server");
ISOServer server = new ISOServer(7654, (ServerChannel) serverChannel,
new ThreadPool(10, 100, "serverListeningThread"));
server.addISORequestListener(new ISORequestListener() {
// If the client sends a message, the server will respond with and approval if its a request message
@Override
public boolean process(ISOSource source, ISOMsg msg) {
try {
if (!msg.isRequest()) {
msg.setResponseMTI();
msg.set(39, "000");
source.send(msg);
}
}
catch (ISOException | IOException ex) {
}
return true;
}
});
Thread serverThread = new Thread(server);
serverThread.start(); // beyond this point the server is listening for a client connection
ASCIIChannel clientChannel = new ASCIIChannel("127.0.0.1", 7654, clientPkg);
clientChannel.setHeader("ISO70100000"); //Similar to server, you can configure the constant in your deploy file
clientChannel.setLogger(l, "client");
clientChannel.connect(); // connect to server, it will be seen in the output console
ISOChannel connectChannel = server.getLastConnectedISOChannel();// Since server can have multiple connections,
// we get the last one that connected to it.
ISOMsg serverInitiatedRequest = new ISOMsg();
serverInitiatedRequest.set(0, "1804");
serverInitiatedRequest.set(7, "1607161705");
serverInitiatedRequest.set(11, "888402");
serverInitiatedRequest.set(12, "160716170549");
serverInitiatedRequest.set(24, "803");
serverInitiatedRequest.set(25, "0000");
serverInitiatedRequest.set(33, "101010");
serverInitiatedRequest.set(37, "619817888402");
connectChannel.send(serverInitiatedRequest); // use the last one connected to send a request message to the client.
ISOMsg receivedRequest = clientChannel.receive();// receive the serers request message at the client
ISOMsg clientResponse = (ISOMsg) receivedRequest.clone();
clientResponse.setResponseMTI();
clientResponse.set(39, "000");
clientChannel.send(clientResponse); // send the response to server
}
}
你的输出应该看起来像
<log realm="client/127.0.0.1:7654" at="Sun Jul 17 12:31:55 IST 2016.764" lifespan="33ms">
<connect>
127.0.0.1:7654
</connect>
</log>
<log realm="Server" at="Sun Jul 17 12:31:55 IST 2016.784" lifespan="4ms">
<pack>
31383034023001808800000031363037313631373035383838343032313630373136313730353439383033303030303036313031303130363139383137383838343032
</pack>
</log>
<log realm="server/127.0.0.1:10614" at="Sun Jul 17 12:31:55 IST 2016.785" lifespan="7ms">
<send>
<isomsg direction="outgoing">
<!-- org.jpos.iso.packager.GenericPackager[C:\temp\iso93asciiB-custom.xml] -->
<field id="0" value="1804"/>
<field id="7" value="1607161705"/>
<field id="11" value="888402"/>
<field id="12" value="160716170549"/>
<field id="24" value="803"/>
<field id="25" value="0000"/>
<field id="33" value="101010"/>
<field id="37" value="619817888402"/>
</isomsg>
</send>
</log>
<log realm="Client" at="Sun Jul 17 12:31:55 IST 2016.787" lifespan="1ms">
<unpack>
31383034023001808800000031363037313631373035383838343032313630373136313730353439383033303030303036313031303130363139383137383838343032
<bitmap>{7, 11, 12, 24, 25, 33, 37}</bitmap>
<unpack fld="7" packager="org.jpos.iso.IFA_NUMERIC">
<value>1607161705</value>
</unpack>
<unpack fld="11" packager="org.jpos.iso.IFA_NUMERIC">
<value>888402</value>
</unpack>
<unpack fld="12" packager="org.jpos.iso.IFA_NUMERIC">
<value>160716170549</value>
</unpack>
<unpack fld="24" packager="org.jpos.iso.IFA_NUMERIC">
<value>803</value>
</unpack>
<unpack fld="25" packager="org.jpos.iso.IFA_NUMERIC">
<value>0000</value>
</unpack>
<unpack fld="33" packager="org.jpos.iso.IFA_LLNUM">
<value>101010</value>
</unpack>
<unpack fld="37" packager="org.jpos.iso.IF_CHAR">
<value>619817888402</value>
</unpack>
</unpack>
</log>
<log realm="client/127.0.0.1:7654" at="Sun Jul 17 12:31:55 IST 2016.789" lifespan="4ms">
<receive>
<isomsg direction="incoming">
<!-- org.jpos.iso.packager.GenericPackager[C:\temp\iso93asciiB-custom.xml] -->
<header>49534F3730313030303030</header>
<field id="0" value="1804"/>
<field id="7" value="1607161705"/>
<field id="11" value="888402"/>
<field id="12" value="160716170549"/>
<field id="24" value="803"/>
<field id="25" value="0000"/>
<field id="33" value="101010"/>
<field id="37" value="619817888402"/>
</isomsg>
</receive>
</log>
<log realm="Client" at="Sun Jul 17 12:31:55 IST 2016.791">
<pack>
31383134023001808A00000031363037313631373035383838343032313630373136313730353439383033303030303036313031303130363139383137383838343032303030
</pack>
</log>
<log realm="Server" at="Sun Jul 17 12:31:55 IST 2016.791">
<unpack>
31383134023001808A00000031363037313631373035383838343032313630373136313730353439383033303030303036313031303130363139383137383838343032303030
<bitmap>{7, 11, 12, 24, 25, 33, 37, 39}</bitmap>
<unpack fld="7" packager="org.jpos.iso.IFA_NUMERIC">
<value>1607161705</value>
</unpack>
<unpack fld="11" packager="org.jpos.iso.IFA_NUMERIC">
<value>888402</value>
</unpack>
<unpack fld="12" packager="org.jpos.iso.IFA_NUMERIC">
<value>160716170549</value>
</unpack>
<unpack fld="24" packager="org.jpos.iso.IFA_NUMERIC">
<value>803</value>
</unpack>
<unpack fld="25" packager="org.jpos.iso.IFA_NUMERIC">
<value>0000</value>
</unpack>
<unpack fld="33" packager="org.jpos.iso.IFA_LLNUM">
<value>101010</value>
</unpack>
<unpack fld="37" packager="org.jpos.iso.IF_CHAR">
<value>619817888402</value>
</unpack>
<unpack fld="39" packager="org.jpos.iso.IFA_NUMERIC">
<value>000</value>
</unpack>
</unpack>
</log>
<log realm="server/127.0.0.1:10614" at="Sun Jul 17 12:31:55 IST 2016.792" lifespan="26ms">
<receive>
<isomsg direction="incoming">
<!-- org.jpos.iso.packager.GenericPackager[C:\temp\iso93asciiB-custom.xml] -->
<header>49534F3730313030303030</header>
<field id="0" value="1814"/>
<field id="7" value="1607161705"/>
<field id="11" value="888402"/>
<field id="12" value="160716170549"/>
<field id="24" value="803"/>
<field id="25" value="0000"/>
<field id="33" value="101010"/>
<field id="37" value="619817888402"/>
<field id="39" value="000"/>
</isomsg>
</receive>
</log>
<log realm="client/127.0.0.1:7654" at="Sun Jul 17 12:31:55 IST 2016.793" lifespan="3ms">
<send>
<isomsg direction="outgoing">
<!-- org.jpos.iso.packager.GenericPackager[C:\temp\iso93asciiB-custom.xml] -->
<header>49534F3730313030303030</header>
<field id="0" value="1814"/>
<field id="7" value="1607161705"/>
<field id="11" value="888402"/>
<field id="12" value="160716170549"/>
<field id="24" value="803"/>
<field id="25" value="0000"/>
<field id="33" value="101010"/>
<field id="37" value="619817888402"/>
<field id="39" value="000"/>
</isomsg>
</send>
</log>