我正在开发使用 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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是我仍然无法执行登录过程,并且在尝试登录时它会向我显示下一个日志。
<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, …
Run Code Online (Sandbox Code Playgroud)