Я работаю над разработкой решения для подключения к финансовому рынку с использованием протокола FIX с фреймворком quickfixj. В частности, я реализую инициатор, и мне необходимо подключиться к акцептору, указать имя пользователя и пароль. Документация 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, передавая имя пользователя и пароль
аутентифицироваться в акцепторе, который может мне помочь.
- Показанное сообщение об ошибке может иметь другую причину, которую кто-то знает?