2015-08-17 1 views
0

я получил следующий фрагмент кода:Peer разъединение при получении ISO8583 сообщение от сервера

final ISOMsg isoMsg = new ISOMsg(); 
isoMsg.setPackager(packager); 
isoMsg.setMTI("0800"); 
isoMsg.set(3, "9A0000"); 
isoMsg.set(7, ISODate.formatDate(now, "MMddHHmmss")); 
isoMsg.set(11, "123456"); 
isoMsg.set(12, ISODate.formatDate(now,"HHmmss"));  
isoMsg.set(13, ISODate.formatDate(now,"MMdd"));   
isoMsg.set(41, "20390040"); 
isoMsg.set(62,"0100820390040"); 
XMLChannel channel = new XMLChannel("xx.xx.xx.xxx", 1234, packager); 
      try{ 

       logger.addListener(new SimpleLogListener(System.out)); 
       //channel.setPackager(packager); 
       channel.setLogger(logger, "server-request-channel"); 
       channel.setTimeout(30000); 
       channel.setHeader(isoMsg_.pack()); 
       channel.connect(); 
      }catch (Exception ex){ 
       System.out.println(ex.getMessage()); 
      } 

      try{ 
       channel.send(isoMsg_);      
       ISOMsg serverResponse = channel.receive(); 
       Log.i("response",new String(serverResponse.pack())); 
      }catch(ISOException ex){ 
       System.out.println(ex.getMessage()); 
      }catch(Exception e){ 
       System.out.println(e.getMessage()); 
      } 

Я получаю сообщение «Peer Disconnect» в любое время, он падает на следующей строке:

ISOMsg serverResponse = channel.receive(); 

в следующий - журнал

<log realm="server-request-channel/xx.xx.xx.xx:1234" at="Fri Aug 14 11:06:04 WAT 2015.900"> 
    <connect> 
     xx.xx.xx.xx:1234 
    </connect> 
</log> 

<log realm="server-request-channel/xx.xx.xx.xx:1234" at="Fri Aug 14 11:06:04 WAT 2015.927"> 
    <send> 
     <isomsg direction="outgoing"> 
      <field id="0" value="0800"/> 
      <field id="3" value="9A0000"/> 
      <field id="7" value="0816210554"/> 
      <field id="11" value="123456"/> 
      <field id="12" value="210554"/> 
      <field id="13" value="0816"/> 
      <field id="41" value="20390040"/> 
      <field id="62" value="0100820390050"/>   
     </isomsg> 
    </send> 
</log> 

<log realm="server-request-channel/41.58.130.138:55533" at="Fri Aug 14 11:06:04 WAT 2015.958"> 
    <receive> 
     <peer-disconnect/> 
    </receive> 
</log> 

Я не знаю, не поступаю ли я правильно или что-то, что я пропустил нг. Предполагается, что это простой (я полагаю) запрос на управление сетью. Как я могу это решить?

ответ

2

Удаленный конец, вероятно, не нравится ваше сообщение (канал может быть неправильным, упаковщик может ошибаться, заголовок может быть неправильным) и закрывает соединение, как только он получит ваш запрос.

Звонок на channel.setHeader(isoMsg_.pack()); является чрезвычайно подозрительным, почему вы отправляете сообщение ISO8583 в виде заголовка в свое фактическое сообщение ISO8583? Вероятно, это неверно (если не требуется спецификацией)

Журналы на их конце, вероятно, знают, почему они закрывают соединение и могут дать вам подсказку о том, что может быть неправильным.

Боюсь, вам придётся связаться с вашей дистанционной конечной точкой.

+0

Спасибо за совет @apr. Я просмотрел документацию по спецификациям и выяснил, что им нужно сообщение, отправленное по SSL-соединению. Я не знаю, как это сделать с JPOS. – jade

+0

Взгляните на https://github.com/jpos/jPOS/blob/master/doc/src/asciidoc/ch05/ssl_channels.adoc Вы можете получить полный документ здесь: http://jpos.org/doc/proguide-draft.pdf – apr

Смежные вопросы