我需要禁用quickfix验证。
设置UseDataDictionary = N不起作用。 删除配置文件中的字典文件的路径不起作用。 将目录中的xml文件重命名为其他扩展名不起作用。
仍然根据验证失败拒绝邮件。
目录是正确的。请帮忙!我确定我错过了一些微不足道的事情。
谢谢!
PS - 回答一些问题: 我得到的错误是:58 =指定超出所需订单的标签371 = 143 372 = 8
实际上,客户端正在邮件正文中发送标记143,而不是标题。客户端不会更改代码。我尝试将标签143添加到ExecutionReport主体,但这没有帮助。我厌倦了为这些人带走标签143。
PS - 配置文件:
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
FileStorePath=store
FileLogPath=log
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=N
DataDictionary=/xxxxxx
TransportDataDictionary=/xxxxx
ResetOnLogon=N
DefaultApplVerID=9
[SESSION]
BeginString=FIX.4.4
SenderCompID=xxxxxx
TargetCompID=xxxxxx
SocketConnectHost=xxxxxxxxx
SocketConnectPort=52400
HeartBtInt=30
答案 0 :(得分:2)
您可以通过在配置文件中将ValidateFieldsOutOfOrder
参数设置为N
来禁用此特定检查。请参阅Configuring QuickFIX。
答案 1 :(得分:0)
如果你有重复的组,你必须有UseDataDictionary = Y,它告诉QuickFIX如何处理重复组中的项目。 “指定超出所需订单的标签371 = 143 372 = 8”通常表示标头标签位于邮件正文中,正文标记位于标题中,重复的组标记位于正文中,正文标记位于重复组等中。由于客户端正在邮件正文中而不是标题中发送标记143,因此您需要编辑DataDictionary,以便该标记出现在邮件正文而不是标题中。由于您可以在每个连接的基础上设置DataDictionary,我会强烈建议您创建原始字典的副本,为其指定客户端特定名称并编辑该文件,然后将其连接到该连接保持原来干净了。