2

我是 quickfix 和 java 的初学者。

通常当我想删除快速修复消息中的字段时,我使用带有标签作为参数的 removeField 方法,但这似乎不适用于 2 个自动生成的字段 - BodyLength(标签 9)和 CheckSum(标签 10 )。

例如,我创建了一条消息,然后打印。

System.out.println(message)

8=FIX.4.29=8635=149=WFSComp23452=20130613-21:45:22.28256=ClientComp1234109=default112=default10=067

然后我删除一个字段,比如标签号 8,使用以下内容

message.getHeader().removeField(8);

并再次打印,我得到

9=7435=149=WFSComp23452=20130613-22:06:32.81956=ClientComp1234112=default10=105

删除该字段的位置,但是当我尝试以相同的方式删除 9 标记时:

message.getHeader().removeField(9);

我打印时的输出产生相同的代码,但没有删除该字段:

9=7435 =149=WFSComp23452=20130613-22:06:32.81956=ClientComp1234112=default10=105

9场还在!

我的猜测是这是因为 quickfix 会自动生成 bodylength,但是你如何删除它呢?谢谢你。

快速修复链接:

javadoc: http ://www.quickfixj.org/quickfixj/javadoc/1.5.3/

http://www.quickfixj.org/

4

1 回答 1

3

是的,QuickFIX 会自动生成 BodyLength 和 Checksum。

我无法想象为什么在世界上你认为你需要删除这些字段,但如果你真的想要删除这些字段的消息字符串,你可以在事后应用正则表达式来混合它:

message.toString().replaceAll("\09=[0-9]*","").replaceAll("\010=[0-9]*","")

不过,再一次,我真的看不出有什么好的理由这样做。

于 2013-06-14T00:50:01.857 回答