2017-06-05 37 views
1

我必須使用jPOS將ISO8583消息發送到ISOServer。我能夠通過客戶端模擬器與QServer進行通信,發送消息並獲取響應。現在,我必須實現一個Java項目(客戶端),將這些消息發送到同一臺服務器。發送ISOSsg到ISOServer

我有一個QServer監聽端口10000和一個ISOMsg對象在我的項目的主類。 如何將此消息發送到服務器(localhost:10000)?

預先感謝您。

回答

2

你能做的最好的事情是不使用主類所有,而是由一個使用由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:"); 

    } 

} 
+0

感謝您的回覆。客戶端模擬器將echo_s文件作爲請求,我在哪裏指定使用QBean而不是echo_s? –

+0

嗨,你需要編寫自己的QBean,我寫的是一個示例代碼,準備就緒。然後將客戶端模擬器的xml描述符替換爲指向您所寫的類的一個描述符。 您需要閱讀我的文章中引用的程序員指南,以瞭解我所提及的概念。這裏沒有快速回答/快捷方式,從你的問題我以爲你想編寫java代碼來發送iso消息,那是因爲我編寫了一個創建iso消息並將其發送到服務器的示例QBean。我猜想,因爲你正在談論寫一個主要。 –

+0

HI @DavideTamburrino我在回答中添加了一個主要示例 –