Java QuickFIX/J启动器-登录时设置用户名和密码

Java QuickFIX/J启动器-登录时设置用户名和密码,java,fix-protocol,quickfixj,Java,Fix Protocol,Quickfixj,我正在开发一个解决方案,通过quickfixj框架使用FIX协议连接到金融市场。具体地说,我正在实现一个启动器,我需要连接到接受者并指定用户名和密码。关于如何将登录消息中的这些字段传递给服务器,quickfixj文档在这方面不是很清楚 通过查看,我发现它被放在函数toAdmin中,我在这个函数中放了以下代码: @Override public void toAdmin(Message message, SessionID sessionId) { Session.lookupSessi

我正在开发一个解决方案,通过quickfixj框架使用FIX协议连接到金融市场。具体地说,我正在实现一个启动器,我需要连接到接受者并指定用户名和密码。关于如何将登录消息中的这些字段传递给服务器,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将用户名和密码传递给 在一个可以帮助我的接受者中进行身份验证。 显示的错误消息可能有人知道的其他原因?
这是您在toAdmin中需要的:


这在中。

这是您在toAdmin中需要的:


这在.

中,从QuickFIX/J 2.2.0开始,您可以通过LogonTag会话设置在发送的登录消息上设置这些标记

例如:

LogonTag=553=user
LogonTag1=554=password 

从QuickFIX/J 2.2.0开始,您可以传递LogonTag会话设置,以便在发送的登录消息上设置这些标记

例如:

LogonTag=553=user
LogonTag1=554=password 

很接近,但header.getFieldnew BooleanFieldMsgType.FIELD错误。你不想要布尔值!很接近,但header.getFieldnew BooleanFieldMsgType.FIELD错误。你不想要布尔值!他@Grant我用了你的建议,thx,但问题仍然存在。至少解决了用户名和密码问题。我回答了你问的问题。这是我所能做的。问一个新问题。他@Grant我用了你的建议,thx,但问题仍然存在。至少解决了用户名和密码问题。我回答了你问的问题。这是我所能做的。问一个新问题。你能提供更多细节吗?这对meThis不起作用这肯定起作用了。您确定您使用的是QuickFIX/J,即至少版本2.2.0中的Java端口吗?我使用的是wso2,当我尝试升级到2.2.0时,出现以下错误:QuickFIX.ConfigError:FIX44.xml:无法识别属性“nts/Property/accessExternalDTD”。甚至不会发送登录消息,但在旧版本中,不会读取用户名,但会发送登录命令。错误消息是2.2.0中的一个错误。请尝试2.3.0它工作正常谢谢我可以在fix命令中看到用户名和密码。但是我仍然收到一个注销响应:缺少必需的标记,字段=553,而消息中有553,您知道为什么吗?请您提供更多详细信息?这对meThis不起作用这肯定起作用了。您确定您使用的是QuickFIX/J,即至少版本2.2.0中的Java端口吗?我使用的是wso2,当我尝试升级到2.2.0时,出现以下错误:QuickFIX.ConfigError:FIX44.xml:无法识别属性“nts/Property/accessExternalDTD”。甚至不会发送登录消息,但在旧版本中,不会读取用户名,但会发送登录命令。错误消息是2.2.0中的一个错误。请尝试2.3.0它工作正常谢谢我可以在fix命令中看到用户名和密码。但是我仍然收到一个注销响应:缺少必需的标记,字段=553,而消息中有553,你知道为什么吗?