2017-08-14 74 views
1

我發送跟隨我的jpos客戶端0800請求。產生沒有從jpos服務器得到任何迴應

private void sendLonOnRequest() { 
     ISOMsg logOnMessage = null; 
     try { 
      Object sessionId = sp.rd(cfg.get(READ_KEY), cfg.getLong(TIME_OUT)); 
      if (sessionId != null) { 
      logOnMessage = new ISOMsg(); 
      logOnMessage.setMTI("0800"); 
      logOnMessage.set(7, ISODate.getDateTime(new Date())); 
      logOnMessage.set(11, getSystemAuditNumber()); 
      logOnMessage.set(70, "001"); 
      logOnMessage.set(125, "EFT"); 
      ISOMsg response = mux.request(logOnMessage, 30000); 
      if (response != null) { 
       sp.out(ECHO, new Object(), echoInterval); 
       handleSuccess(logOnMessage); 
      } else { 
       log.info("############ RESPONSE NULL"); 
       handleFailure(logOnMessage, null); 
      } 
      } 
     } catch (ISOException e) { 
      handleFailure(logOnMessage, e); 
     } 
    } 

系統審計號碼爲:

public String getSystemAuditNumber() { 
    int stan = new Random().nextInt(900000); 
    return ISOUtil.zeropad(stan, 6); 
} 

樣品請求是:

<log realm="channel/xxx.xxx.xx.xxx:port" at="Thu Aug 10 14:12:32 IST 2017.175" lifespan="78ms"> 
    <send> 
    <isomsg direction="outgoing"> 
     <!-- org.jpos.iso.packager.GenericPackager[D:/location/to/packager/iso87ascii.xml] --> 
     <field id="0" value="0800"/> 
     <field id="7" value="0810141232"/> 
     <field id="11" value="022887"/> 
     <field id="70" value="001"/> 
     <field id="125" value="EFT"/> 
    </isomsg> 
    </send> 
</log> 

但是我沒有得到來自初級專業人員服務器的任何響應(響應爲空),並客戶端超時。我沒有辦法查看服務器的日誌或進行調試。有人能幫助我嗎?

+1

您需要管理服務器的人的反饋,否則您完全是盲目的,唯一可以做的就是確保您根據服務器規格使用正確的打包程序和通道。 –

+1

謝謝Andres。找出原因。通道的標題值包含空格。例如,標題是:「ISOHEADER」。當我在通道適配器配置中配置它時,它似乎修剪了標題值。有沒有辦法用空格配置標題? – Chanikag

+0

創建單獨的SO問題:https://stackoverflow.com/questions/45709755/how-to-configure-jpos-channel-header-with-spaces – Chanikag

回答

0

如果您沒有從服務器獲取日誌的選項,最好的選擇是去網絡嗅探器,如Wireshark

這可以幫助您瞭解發生了什麼(TCP數據包級別)。

相關問題