发送 ISOMsg 到 ISOServer
Send ISOMsg to ISOServer
我必须使用 jPOS 将 ISO8583 消息发送到 ISOServer。我能够通过客户端模拟器与 QServer 通信,发送消息并获得响应。现在,我必须实施一个 java 项目(客户端),将这些消息发送到同一台服务器。
我有一个 QServer 侦听端口 10000 和一个 ISOMsg 对象在我的项目的主要 class 中。
如何将此消息发送到服务器 (localhost:10000)?
提前致谢。
你能做的最好的事情就是根本不使用主 class,而是使用客户端模拟器替换客户端模拟器部署描述符,该描述符使用 you.Chapters 7.4 编写的 QBean - programmers guide 的 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);
}
}
希望这能为您指明正确的方向。
另外,如果你真的想写一个 main 来理解这里的基本概念,你有一个极简代码(没有多路复用器、记录器等)。
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:");
}
}
我必须使用 jPOS 将 ISO8583 消息发送到 ISOServer。我能够通过客户端模拟器与 QServer 通信,发送消息并获得响应。现在,我必须实施一个 java 项目(客户端),将这些消息发送到同一台服务器。
我有一个 QServer 侦听端口 10000 和一个 ISOMsg 对象在我的项目的主要 class 中。 如何将此消息发送到服务器 (localhost:10000)?
提前致谢。
你能做的最好的事情就是根本不使用主 class,而是使用客户端模拟器替换客户端模拟器部署描述符,该描述符使用 you.Chapters 7.4 编写的 QBean - programmers guide 的 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);
}
}
希望这能为您指明正确的方向。
另外,如果你真的想写一个 main 来理解这里的基本概念,你有一个极简代码(没有多路复用器、记录器等)。
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:");
}
}