Apache kafka 将JSON数据从COBOL程序发送到KAFKA rest服务器
当我试图从COBOL程序发送到KAFKA时,JSON数据中缺少了“方括号” 我已经启动了KAFKA-REST服务器,并尝试在COBOL程序中格式化json数据,并使用“WEB SEND POST”发送数据 注意:用于web发送帖子的媒体类型为:Apache kafka 将JSON数据从COBOL程序发送到KAFKA rest服务器,apache-kafka,cobol,kafka-rest,Apache Kafka,Cobol,Kafka Rest,当我试图从COBOL程序发送到KAFKA时,JSON数据中缺少了“方括号” 我已经启动了KAFKA-REST服务器,并尝试在COBOL程序中格式化json数据,并使用“WEB SEND POST”发送数据 注意:用于web发送帖子的媒体类型为:application/vnd.kafka.json.v1+json 我可以看到COBOL攻击我的KAFKa服务器,但在KAFKa服务器端出现以下错误: "POST /topics/test HTTP/1.1" 400 159 (i
application/vnd.kafka.json.v1+json
我可以看到COBOL攻击我的KAFKa服务器,但在KAFKa服务器端出现以下错误:
"POST /topics/test HTTP/1.1" 400 159 (io.confluent.restutils.requests:77)
试图从COBOL发送的数据:
{"records":[{"value":{"name":"vikash"}}]}
但COBOL端本身的方括号正在被删除,数据的格式如下:
{"records": {"value":{"name":"vikash"}} }
请帮忙
下面是COBOL代码
'''
网上发帖
众所周知,方括号会导致PC和大型机之间出现问题。您要确保在大型机上,这些是EBCDIC字符x'BA'和x'BB'作为左括号('[')和右括号(']')。当您使用键盘输入时,某些终端模拟器无法正确显示这些字符,或者无法为其分配正确的EBCDIC字符 例如,我将上面的COBOL结构复制到一个程序中。当我在WS-LEFT-BRACE字段中输入PC中的[character]时,我没有得到x'BA'字符。相反,它显示为x'5F'。同样,WS-RIGHT-BRACE显示为x'A5'而不是x'BB' 因此,首先要做的是检查COBOL结构中的实际十六进制值 在字段中输入正确的值后,我使用了与您相同的媒体类型的WEB SEND。我的HTTP客户端收到了正确的JSON输出,包括方括号。我确实对CHARACTERSET('iso-8859-1')进行了显式编码,但您不必对该操作数进行编码,因为它是默认值
如果您的COBOL结构中确实有正确的十六进制值,我建议您与IBM一起打开一个问题单。CICS不应该从HTTP正文中删除方括号。您可以共享您的COBOL代码吗?否则很难排除故障。可能是代码页问题涉及到哪些代码页。您可以获得字符串的十六进制转储吗?@RobinMoffatt感谢您的回复,我也添加了cobol代码。请看一看。@JamesAnderson嗨,James,感谢您的回复,应该提供什么代码页,请帮助我。我也添加了代码供您参考。Leigh的回答适用于默认cobol代码页EBCDIC 1140。如果使用EBCDIC 1047,这是一个另一个常用的EBCDIC代码页和USS中的默认代码页,左括号和右括号是EBCDIC字符x'AD'和x'BD'。确切地说——我指的是代码页037,它是美国MVS文件中使用的默认EBCDIC代码页。1047是Unix文件系统的默认代码页。我根据COBOL代码第在最初的海报上,他使用传统的MVS分区数据集作为源代码。感谢您指出“这取决于”这是答案的一部分。还有一件事,一般来说,JSON生成为UTF-8,因为JSON作为一种格式本身说应该是编码。用户可以自由地将其转换为EBCDIC以便于使用/查看,如果在EBCDIC平台上传输JSON的EBCDIC版本,则可能会出现上述转换问题。然而,可能是这样的最好将JSON保存在UTF-8中,并四处传输。
`EXEC CICS WEB SEND POST
SESSTOKEN(WS-SESSION-TOKEN)
FROM(WS-TRY-DATA)
FROMLENGTH(LENGTH OF WS-TRY-DATA)
MEDIATYPE(MEDIA-TYPE)
PATH(WS-KAFKA-PATH)
PATHLENGTH(LENGTH OF WS-KAFKA-PATH)
RESP(WS-RESP) RESP2(WS-RESP2)
NOHANDLE
END-EXEC.
01 WS-TRY-DATA.
05 WS-FILLER1 PIC X(01) VALUE "{".
05 WS-FILLER4 PIC X(01) VALUE '"'.
05 WS-RECORD PIC X(09) VALUE 'records":'.
05 WS-LEFT-BRACE PIC X(01) VALUE '['.
05 WS-FILLER2 PIC X(01) VALUE "{".
05 WS-FILLER6 PIC X(01) VALUE '"'.
05 WS-VALUE-LIT PIC X(09) VALUE 'value":{"'.
05 WS-VALUE PIC X(07) VALUE 'name":"'.
05 WS-VALUE2 PIC X(09) VALUE 'vikash"}}'.
05 WS-RIGHT-BRACE PIC X(01) VALUE ']'.
05 WS-FILLER3 PIC X(01) VALUE "}".
01 MEDIA-TYPE PIC X(56) VALUE
'application/vnd.kafka.json.v1+json'.