我必须使用jPOS将ISO8583消息发送到ISOServer。我能够从客户端模拟器与QServer通信,发送消息并获得响应。现在,我必须实现一个将这些消息发送到同一服务器的java项目(客户端)。
我有一个QServer监听端口10000和一个ISOMsg对象在我的项目的主类中。 如何将此消息发送到服务器(localhost:10000)?
提前谢谢。
答案 0 :(得分:2)
你可以做的最好的事情就是不要使用主类,而是使用客户端模拟器将客户端模拟器部署描述符替换为使用你编写的QBean的客户端模拟器部署描述符。{{3}的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:");
}
}