我必须使用 jPOS 将 ISO8583 消息发送到 ISOServer。我能够从客户端模拟器与 QServer 通信,发送消息并获得响应。现在,我必须实现一个将这些消息发送到同一台服务器的 java 项目(客户端)。
我有一个 QServer 在端口 10000 上侦听,并且在我的项目的主类中有一个 ISOMsg 对象。如何将此消息发送到服务器 (localhost:10000) ?
先感谢您。
您可以做的最好的事情是根本不使用主类,而是使用客户端模拟器将客户端模拟器部署描述符替换为使用您编写的 QBean 的描述符。程序员指南的第 7.4 - 7.6 章。引导您完成创建一个的过程,您只需要更改代码以获取 MUX(您可以使用 ClientSimulator 代码作为基础来执行此操作)并像客户端模拟器一样使用它来发出请求。
这里有一个示例 QBean,它在起始面发送请求并打印响应。
package stack.examples;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.MUX;
import org.jpos.iso.packager.ISO87APackager;
import org.jpos.q2.QBeanSupport;
import org.jpos.q2.iso.QMUX;
public class SendMessageQBean extends QBeanSupport{
@Override
protected void startService() throws Exception {
super.startService();
ISOMsg request = new ISOMsg();
request.setMTI("0200");
request.set(2, "16");
request.set(2, "5421287475388412");
request.set(3, "000000");
request.set(4, "400.0");
request.set(7, "0716070815");
request.set(11, "844515");
MUX mux = QMUX.getMUX(cfg.get("dest-mux", "clientsimulator-mux"));
log.info("sending request", request);
ISOMsg response = mux.request(request, cfg.getInt("timeout", 5000));
log.info("received response", response);
}
}
希望这能为您指明正确的方向。
此外,如果您真的想编写一个主要内容来理解这里的基本概念,那么您有一个极简代码(没有多路复用器、记录器等)。
package stack.examples;
import java.io.IOException;
import org.jpos.iso.ISOChannel;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.iso.ISOPackager;
import org.jpos.iso.channel.XMLChannel;
import org.jpos.iso.packager.XMLPackager;
public class JposClient {
public static void main(String[] args) throws ISOException, IOException {
ISOPackager packager = new XMLPackager();
ISOChannel channel = new XMLChannel("localhost", 10000,packager);
channel.connect();
ISOMsg request = new ISOMsg();
request.setMTI("0200");
request.set(2, "16");
request.set(2, "5421287475388412");
request.set(3, "000000");
request.set(4, "400.0");
request.set(7, "0716070815");
request.set(11, "844515");
channel.send(request);
ISOMsg response = channel.receive();
response.dump(System.out, "response:");
}
}