编程语言
首页 > 编程语言> > c#-获取QuickFix / n的会话属性(用户名和密码)

c#-获取QuickFix / n的会话属性(用户名和密码)

作者:互联网

我已经将我的用户名和密码放在FIX配置文件中.因此,我必须认为我应该能够从某些内部变量(例如会话变量或SessionSetting变量或session.SessionDataDictionary或其他变量)获取用户名和密码.但是,我没有找到直接从内部变量获取用户名和密码的解决方案.

[SESSION]
BeginString=FIX.4.4
SenderCompID= xxxxx
Username= xxxx
Password= xxxx

从逻辑上讲,这可能是非常可行的.但是,没有人建议这样做,或者我还没有在Google上看到任何人这样做.我从Google找到的唯一代码位是这个.

String username = sessionSettings.getString(sessionId, "Username"); //only works for Java version of QuickFix

但是上述代码仅适用于Java版本的QuickFix,而该方法在DotNet版本的QuickFix中不可用(即QuickFix / n)

getString(sessionId, "Username"); 

我希望使用QuickFix / n实现FIX 4.4的类似结果.
如果有人熟悉QuickFix,这可能是非常简单的任务.
非常感谢您的提示或建议.我不介意您是否对Java或C版本有所了解,因为它们都非常相似.我只需要知道此用户名和密码存储在哪个变量中,以及如何使用Csharp代码获取它即可.

提前致谢.

解决方法:

您使用String username = sessionSettings.getString(sessionId,“ Username”);处于正确的轨道,但是QuickFIX / n中的方法调用略有不同.

调用更像sessionSettings.Get(sessionId).GetString(“ Username”);.

请参阅以下示例:

var configuration =
    new System.Text.StringBuilder().AppendLine("[ DEFAULT ]")
        .AppendLine("ConnectionType=initiator")
        .AppendLine("[SESSION]")
        .AppendLine("BeginString=FIX.4.4")
        .AppendLine("SenderCompID=Sender")
        .AppendLine("TargetCompID=Target")
        .AppendLine("Username=Gandalf")
        .AppendLine("Password=YouShallNotPass")
        .ToString();
var settings = new SessionSettings(new System.IO.StringReader(configuration));
var session = new SessionID("FIX.4.4", "Sender", "Target");
var sender = settings.Get(session).GetString("SenderCompID"); // Returns Sender
var user = settings.Get(session).GetString("Username"); // Returns Gandalf
var pass = settings.Get(session).GetString("Password"); // Returns YouShallNotPass

有关参考,请参见unit tests for SessionSettings.

标签:quickfix,quickfixj,fix-protocol,c
来源: https://codeday.me/bug/20191028/1955962.html