Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解压缩从客户端发送的请求。虽然我能够成功地向他们的服务器发送请求,但它一直在抱怨我的打包机_Java_Iso8583_Jpos_Openiso8583.net - Fatal编程技术网

Java 无法解压缩从客户端发送的请求。虽然我能够成功地向他们的服务器发送请求,但它一直在抱怨我的打包机

Java 无法解压缩从客户端发送的请求。虽然我能够成功地向他们的服务器发送请求,但它一直在抱怨我的打包机,java,iso8583,jpos,openiso8583.net,Java,Iso8583,Jpos,Openiso8583.net,我有双向实现,在这里我发送和接收来自远程服务器的请求。我能够成功发送请求,并始终获得成功响应。然而,当客户向我发送请求时,我的打包员会抱怨。更新打包程序会导致向客户端发送请求失败。下面是我的错误和配置 <log realm="post-channel/XXX.XXX.XXX.XXX:7777" at="2020-10-19T18:45:05.561" lifespan="5248ms"> <receive> &l

我有双向实现,在这里我发送和接收来自远程服务器的请求。我能够成功发送请求,并始终获得成功响应。然而,当客户向我发送请求时,我的打包员会抱怨。更新打包程序会导致向客户端发送请求失败。下面是我的错误和配置

<log realm="post-channel/XXX.XXX.XXX.XXX:7777" at="2020-10-19T18:45:05.561" lifespan="5248ms">
<receive>
<iso-exception>
  org.jpos.iso.IFA_LLCHAR: Problem unpacking field 94 (org.jpos.iso.ISOException: Invalid character found. Expected digit.) unpacking field=94, consumed=324
  org.jpos.iso.ISOException: org.jpos.iso.IFA_LLCHAR: Problem unpacking field 94 (org.jpos.iso.ISOException: Invalid character found. Expected digit.) unpacking field=94, consumed=324
    at org.jpos.iso.ISOBasePackager.unpack(ISOBasePackager.java:340)
    at org.jpos.iso.ISOMsg.unpack(ISOMsg.java:479)
    at org.jpos.iso.BaseChannel.unpack(BaseChannel.java:976)
    at org.jpos.iso.BaseChannel.receive(BaseChannel.java:746)
    at org.jpos.q2.iso.ChannelAdaptor$Receiver.run(ChannelAdaptor.java:332)
    at java.lang.Thread.run(Thread.java:748)
</iso-exception> 

您如何定义、发送和接收这些请求?你能和我们分享代码吗?这个XML和什么有什么关系?读取此XML的系统或代码是什么?这个问题太不明确了,我怀疑你会在没有提供更多信息的情况下得到答案。我已经用建议的接收请求的代码更新了我的问题…好的。所以我看到你在用。我从来没有使用过类似的东西,而且考虑到您的代码,它非常不透明。我认为帮助将来自于以前使用过jPOS的人,而不是我。所以,我想这是一个很好的地方,尽管你也可能想寻找邮件列表、网站或特定于该技术的聊天组,以便有机会找到足够了解这些信息的人来帮助你。祝你好运!问题在于网络消息(aka x800)的格式与其他类型的请求(如授权(x100)、财务(x200)或撤销(x400)的格式不同?或者这些请求中有一个DE没有正确映射,您没有注意到,因为它不存在于800/810消息中?如果您发布不同消息的原始hexdump(登录/注销)+您正在接收但无法解析的内容,以及您的打包程序的定义,这可能会有所帮助
<?xml version="1.0" encoding="UTF-8"?>
<channel-adaptor name="pesalink-channel" logger="Q2">
<channel class="org.jpos.iso.channel.ASCIIChannel" type="client" connect="yes" logger="Q2" realm="post-channel" packager="org.jpos.iso.packager.GenericPackager">
<property name="packager-config" value="cfg/customize.xml" />
<property name="host" value="XXX.XXX.XXX.XXX" />
<property name="port" value="7777" />
<property name="length-digits" value="6" />
<property name="connection-timeout" value="30000" />
<property name="timeout" value="300000" />
</channel>
<in>pesalink-channel-send</in>
<out>pesalink-channel-receive</out>
<reconnect-delay>10000</reconnect-delay>
<keep-alive>yes</keep-alive>
</channel-adaptor>
<?xml version="1.0" ?>
<server name="server-receiving" class="org.jpos.q2.iso.QServer" logger="Q2">
<attr name="port" type="java.lang.Integer">7777</attr>
<channel name="channel-receive" class="org.jpos.iso.channel.NACChannel" packager="org.jpos.iso.packager.GenericPackager" logger="Q2">
 <property name="packager-config" value="cfg/customize2.xml" />
 </channel>
 <request-listener class="com.test.linkListener" logger="Q2" realm="incoming-request-listener"> 
 </request-listener>
 <in>NETWORK_IN</in>
 <out>NETWORK_OUT</out>
 </server>
public class linkListener implements ISORequestListener{

    private static final String FTREQUEST = "1200";
    private static final String REVADVICE = "1420";
    private static final String NETWORKREQ = "1804";

    @Autowired
    HttpHandler httpHandler;

    Log log1;

    @Override
    public boolean process(ISOSource source, ISOMsg m) {
        System.out.println("::::: Waiting :::::");
        log.info("::::: Inside  Listener :::::");
        try {
            String mti = m.getMTI();
            System.out.println("mti ::: " + mti);
            log.info("mti ::: " + mti);
            switch (mti) {
                case FTREQUEST:
                    log.info("Inside Financial Transaction Request");
                    String amt = m.getString(4);
                    Double amount1 = Double.parseDouble(amt);
                    Double amount2 = amount1 / 100;
                    String amount = String.format("%.2f", amount2);
                    log.info("amount formated ::: " + amount);

                    String stan = m.getString(11);
                    log.info("stan ::: " + stan);
                    String rrn = m.getString(37);
                    log.info("rrn ::: " + rrn);
                    String senderAccountNo = m.getString(102);
                    log.info("senderAccountNo ::: " + senderAccountNo);
                    String beneficiaryAccountNo = m.getString(103);
                    log.info("senderAccountNo ::: " + beneficiaryAccountNo);

                    m.set(39, "100");

                    m.setMTI("1210");
                    m.set(2, m.getString(2));
                    m.set(3, m.getString(3));
                    m.set(4, m.getString(4));
                    m.set(11, m.getString(11));
                    m.set(12, m.getString(12));
                    source.send(m);

                    break;
                case REVADVICE:
                    log.info("Reversal Advice");
                    break;
                case NETWORKREQ:
                    log.info("Network Management Request");
                    break;
            }

        } catch (Exception ex) {
            ex.printStackTrace(System.out);
        }
        return true;
    }
}