python向java应用,通过tcp方式发送数据,数据内容包括byte数组和json的混合结构的。
通常做法,在python中构造dict对象,添加对应的key和value,在将其转为json字符串;再创建byte数组的信息头部,把json字符串转为byte数组,合并到一起,有时还会加上信息校验和。最后通过tcp发送到java。
这个流程下来,数据内容就发送到java应用上了,不过总是校验和错误。最后发现一个细节问题。
在dict或json转为字符串时,默认会在每个key前加一个空格,就是这个空格导致在计算校验和时,这个空格也被当作内容的一部分,但是java中把空格当作空,不处理,所有导致两边计算的检验和不一致。
所以在数据结构转字符串后,最好用str.replace(),把空格替换掉,避免不必要的问题。
这个问题我找了半天才发现,真是菜鸟一枚。这里做个记录,希望可以给大家提供参考。