1
我必須使用jPOS將ISO8583消息發送到ISOServer。我能夠通過客戶端模擬器與QServer進行通信,發送消息並獲取響應。現在,我必須實現一個Java項目(客戶端),將這些消息發送到同一臺服務器。發送ISOSsg到ISOServer
我有一個QServer監聽端口10000和一個ISOMsg對象在我的項目的主類。 如何將此消息發送到服務器(localhost:10000)?
預先感謝您。
我必須使用jPOS將ISO8583消息發送到ISOServer。我能夠通過客戶端模擬器與QServer進行通信,發送消息並獲取響應。現在,我必須實現一個Java項目(客戶端),將這些消息發送到同一臺服務器。發送ISOSsg到ISOServer
我有一個QServer監聽端口10000和一個ISOMsg對象在我的項目的主類。 如何將此消息發送到服務器(localhost:10000)?
預先感謝您。
你能做的最好的事情是不使用主類所有,而是由一個使用由you.Chapters 7.4編寫的QBean使用客戶端模擬器代替客戶端模擬器部署描述符 - 7.6 programmers guide的。引導您完成創建過程,您只需更改代碼以獲取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:");
}
}
感謝您的回覆。客戶端模擬器將echo_s文件作爲請求,我在哪裏指定使用QBean而不是echo_s? –
嗨,你需要編寫自己的QBean,我寫的是一個示例代碼,準備就緒。然後將客戶端模擬器的xml描述符替換爲指向您所寫的類的一個描述符。 您需要閱讀我的文章中引用的程序員指南,以瞭解我所提及的概念。這裏沒有快速回答/快捷方式,從你的問題我以爲你想編寫java代碼來發送iso消息,那是因爲我編寫了一個創建iso消息並將其發送到服務器的示例QBean。我猜想,因爲你正在談論寫一個主要。 –
HI @DavideTamburrino我在回答中添加了一個主要示例 –