2016-10-13 13 views
1

ISOメッセージ(0800 2020000000800000 000000 000001 3239313130303031)用にj8583 isoパーサーを使用しています。J8583:メッセージタイプの解析ガイドがISO8583 MessageFactoryにありません0800

public class ISOUtility { 

    private static BufferedReader reader; 

    private static String getMessage() throws IOException { 
     if (reader == null) { 
      reader = new BufferedReader(new InputStreamReader(System.in)); 
     } 
    // System.out.println("Paste your ISO8583 message here (no ISO headers): "); 
     return "0800 2020000000800000 000000 000001 3239313130303031"; 
    } 

    public static void main(String [] args) throws IOException, ParseException { 

     final MessageFactory<IsoMessage> mf = new MessageFactory<IsoMessage>(); 

     if (1 == 0) { 


     // ConfigParser.createFromClasspathConfig("j8583.xml"); 
      ConfigParser.configureFromDefault(mf); 


     } else { 

      String path="C:\\Users\\DELL\\workspace\\SolabParser\\j8583.xml"; 
      if (System.console() != null) { 
       System.console().printf("Attempting to configure MessageFactory from %s...%n", path); 

      } 
      System.out.println("Messagefactory is done"); 
      String url = "j8583.xml"; 
      if (path.contains("://")) { 
       System.out.println("else "); 

       ConfigParser.configureFromUrl(mf, new URL(path)); 
      } else { 
       System.out.println("else "); 
       ConfigParser.configureFromUrl(mf, new File(path).toURI().toURL()); 
      } 
     } 
     //Now read messages in a loop 
     String line = getMessage(); 
     while (line != null && line.length() > 0) { 
      IsoMessage m = mf.parseMessage(line.getBytes(), 14); 
      if (m != null) { 
       System.out.printf("Message type: %04x%n", m.getType()); 
       System.out.println("FIELD TYPE VALUE"); 
       for (int i = 2; i <= 128; i++) { 
        IsoValue<?> f = m.getField(i); 
        if (f != null) { 
         System.out.printf("%5d %-6s [", i, f.getType()); 
         System.out.print(f.toString()); 
         System.out.println(']'); 
        } 
       } 
      } 
      line = getMessage(); 
     } 
    } 
} 

以下に設定ファイルです:

以下は私のJavaコードです。私はこれのために、私は、任意のヘッダを使用していない「0800」タイプのメッセージを使用してい

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE j8583-config PUBLIC "-//J8583//DTD CONFIG 1.0//EN" 
    "http://j8583.sourceforge.net/j8583.dtd"> 
<j8583-config> 
<!-- This is a test config file --> 

<!-- These are the ISO headers to be prepended to the message types specified --> 
<header type="0800"></header> 

<template type="0280"> 
    <field num="3" type="NUMERIC" length="2">99</field> 
</template> 

<!-- The server example uses this to read the requests --> 
<parse type="0200"> 
    <field num="3" type="NUMERIC" length="6" /> 
    <field num="4" type="AMOUNT" /> 
    <field num="7" type="DATE10" /> 
    <field num="11" type="NUMERIC" length="6" /> 
    <field num="12" type="TIME" /> 
    <field num="13" type="DATE4" /> 
    <field num="15" type="DATE4" /> 
    <field num="17" type="DATE_EXP" /> 
    <field num="32" type="LLVAR" /> 
    <field num="35" type="LLVAR" /> 
    <field num="37" type="NUMERIC" length="12" /> 
    <field num="41" type="ALPHA" length="16" /> 
    <field num="43" type="ALPHA" length="40" /> 
    <field num="48" type="LLLVAR" /> 
    <field num="49" type="ALPHA" length="3" /> 
    <field num="60" type="LLLVAR" /> 
    <field num="61" type="LLLVAR" /> 
    <field num="100" type="LLVAR" /> 
    <field num="102" type="LLVAR" /> 
</parse> 

<!-- The client example uses this to read the responses --> 
<parse type="0210"> 
    <field num="3" type="NUMERIC" length="6" /> 
    <field num="4" type="AMOUNT" /> 
    <field num="7" type="DATE10" /> 
    <field num="11" type="NUMERIC" length="6" /> 
    <field num="12" type="TIME" /> 
    <field num="13" type="DATE4" /> 
    <field num="15" type="DATE4" /> 
    <field num="17" type="DATE_EXP" /> 
    <field num="32" type="LLVAR" /> 
    <field num="35" type="LLVAR" /> 
    <field num="37" type="NUMERIC" length="12" /> 
    <field num="38" type="NUMERIC" length="6" /> 
    <field num="39" type="NUMERIC" length="2" /> 
    <field num="41" type="ALPHA" length="16" /> 
    <field num="43" type="ALPHA" length="40" /> 
    <field num="48" type="LLLVAR" /> 
    <field num="49" type="ALPHA" length="3" /> 
    <field num="60" type="LLLVAR" /> 
    <field num="61" type="LLLVAR" /> 
    <field num="70" type="ALPHA" length="3" /> 
    <field num="90" type="ALPHA" length="42" /> 
    <field num="100" type="LLVAR" /> 
    <field num="102" type="LLVAR" /> 
    <field num="126" type="LLLVAR" /> 
</parse> 

<!-- this is for binary tests (message encoding AND fields) --> 
<parse type="0600"> 
    <field num="4" type="AMOUNT" /> 
    <field num="7" type="DATE10" /> 
    <field num="11" type="NUMERIC" length="6" /> 
    <field num="41" type="BINARY" length="8" /> 
    <field num="42" type="BINARY" length="4" /> 
    <field num="43" type="ALPHA" length="40" /> 
    <field num="62" type="LLBIN" /> 
    <field num="63" type="LLBIN" /> 
    <field num="64" type="LLLBIN" /> 
    <field num="65" type="LLLBIN" /> 
    <field num="102" type="LLLVAR" /> 
</parse> 

<parse type="0800"> 
    <field num="3" type="ALPHA" length="6"/> 
    <field num="12" type="DATE4" legth="14"> 
    <field num="17" type="DATE4" length="8"/> 
    <field num="11" type="NUMERIC" length="6"/> 
    <field num="41" type="LLVAR" length="16"/> 
</parse> 

<parse type="0810" extends="0800"> 
    <field num="17" type="exclude"/> 
    <field num="39" type="ALPHA" length="2"/> 
</parse> 

<parse type="0201"> 
    <field num="3" type="NUMERIC" length="19" /> 
</parse> 
<parse type="0202"> 
    <field num="3" type="NUMERIC" length="22" /> 
</parse> 
<parse type="0280"> 
    <field num="3" type="NUMERIC" length="2" /> 
</parse> 

</j8583-config> 

プログラムをコンパイルしながら、私はエラーを取得しています: ISO8583のMessageFactoryは、任意の助けが理解されるであろうメッセージタイプ0800

のための解析ガイドを持っていません。

+0

あなたが0800のためのヘッダを使用していない場合、あなたはその 'header'エントリを省略することができます。あなたは明らかに0800用の解析ガイドを持っているので、おそらくあなたは設定ファイルを読んでいないでしょうか? – Chochos

答えて

0

フィールド41のフォーマットで間違えたと思います。 メッセージの種類が異なるため、プロファイルが異なります。

ここでは、BIT 41が16個のHEX文字を8個のASCII文字(数字)に変換したサンプルメッセージの解釈が可能です。

https://iso8583.info/cmd/CB/AUTO/msg?080020200000008000000000000000013239313130303031

--- 
# Cheef's parser. 
# Copyright (C) 2008-2016 Alexander Shevelev. https://iso8583.info/ 
# lib : "/lib/CB/AUTO/" - CB2A Autorisation 
# tool : "msg" 
# stat : 10 nodes, 4 lookup tables, 100.00% passed (4/4) 

msg:#"080020200000008000000000000000013239313130303031" # CB2A Autorisation message 
- MTI: "0800" # Message Type ID. // Network management request 
- DE000: "2020000000800000" # Primary bitmap // 3.11.41. 
- BM0:#"0000000000013239313130303031" # Fields at Primary Bitmap 
    - DE003:#"000000" # PC 
    - S01: "00" # Transaction Code. // Purchase of goods or services 
    - S02: "00" # Account, from. // Standard purchase 
    - S03: "00" # Account, to. // Standard purchase 
    - DE011: "000001" # STAN. // 1 
    - DE041: "29110001" # CATI. 

# run:0.030 
関連する問題