QuickFixJ Initiator在登录时设置用户名和密码

问题描述 投票:0回答:1

我正致力于使用FIX协议和quickfixj框架开发连接金融市场的解决方案。具体来说,我正在实现一个启动器,我需要连接到接受器指定用户名和密码。关于如何将Logon消息中的这些字段传递给服务器,quickfixj文档在这方面不是很清楚。

经过我发现它放在函数toAdmin中,我在这个函数中输入了以下代码:

@Override
public void toAdmin(Message message, SessionID sessionId) {

    Session.lookupSession(sessionId).setTargetDefaultApplicationVersionID(new ApplVerID("9"));

    final Message.Header header = message.getHeader();      

     try {
        if ( header.getField(new BooleanField(MsgType.FIELD)).equals(MsgType.LOGON) ) {                  
                message.setField(new StringField(Username.FIELD, "user")); 
                message.setField( new StringField(Password.FIELD, "pass"));
                System.out.println(">>> " + message.toRawString()); 
             }
    } catch (FieldNotFound e) {
        // TODO Auto-generated catch block

        e.printStackTrace();
    } 
}

但我仍然无法执行登录过程,它会在尝试登录时向我显示下一个日志。

<20190313-14:44:33, FIXT.1.1:aaa->bbb, outgoing> (8=FIXT.1.1 9=74 35=A 34=1 49=aaa 52=20190313-14:44:33.431 56=bbb 98=0 108=30 1137=9 10=131 )
<20190313-14:44:33, FIXT.1.1:aaa->bbb, event> (Initiated logon request)
<20190313-14:44:33, FIXT.1.1:aaa->bbb, event> (Disconnecting: Encountered END_OF_STREAM)
<20190313-14:44:37, FIXT.1.1:aaa->bbb, event> (MINA session created: local=/192.168.1.80:51372, class org.apache.mina.transport.socket.nio.NioSocketSession, remote=/3.3.3.3:443)
<20190313-14:44:38, FIXT.1.1:aaa->bbb, outgoing> (8=FIXT.1.1 9=74 35=A 34=2 49=aaa 52=20190313-14:44:38.420 56=bbb 98=0 108=30 1137=9 10=135 )
<20190313-14:44:38, FIXT.1.1:aaa->bbb, event> (Initiated logon request)
<20190313-14:44:38, FIXT.1.1:aaa->bbb, event> (Disconnecting: Encountered END_OF_STREAM)

在某些论坛中,他们提到当用户名和密码未正确传递时,可能会发生这种情况

问题:

  • 有人使用quickfixj传递用户名和密码在一个可以帮助我的接受器中进行身份验证。
  • 显示的错误消息可能有其他原因,有人知道吗?
java fix-protocol quickfixj
1个回答
2
投票

这就是你在toAdmin()所需要的:

final String msgType = msg.getHeader().getString(MsgType.FIELD);
if(MsgType.LOGON.compareTo(msgType) == 0)
{
    msg.setString(quickfix.fields.Username.FIELD, _username);
    msg.setString(quickfix.fields.Password.FIELD, _password);
}

这是在User FAQ

© www.soinside.com 2019 - 2024. All rights reserved.