发送 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:");

    }

}