当我试图从cobol程序发送到kafka时,json数据中缺少了“方括号”
我已经启动了kafkarest服务器,尝试在cobol程序中格式化json数据,并使用“websendpost”发送数据。
注意:用于web发送帖子的媒体类型为: 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代码,请在此处输入图像描述
使用的媒体类型
在此处输入图片描述
`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'.
web发送邮件
1条答案
按热度按时间cunj1qz11#
方括号会导致pc和大型机之间的问题。您要确保在大型机上,这些是ebcdic字符x'ba'和x'bb'作为左括号('[')和右括号(']')。当您使用键盘输入时,某些终端仿真器不能正确显示这些字符,或者不能为它们分配正确的ebcdic字符。
例如,我将上面的cobol结构复制到一个程序中。当我在ws-left brace字段中输入pc中的[字符]时,我没有得到x'ba'字符。相反,它显示为x'5f'。同样,ws-right大括号显示为x'a5'而不是x'bb'。
因此,首先要检查cobol结构中的实际十六进制值。
在将正确的值输入该字段后,我使用了与您相同的媒体类型的websend。我的http客户机收到了正确的json输出,包括方括号。我确实显式地对characterset('iso-8859-1')进行了编码,但您不必对该操作数进行编码,因为它是默认值。
如果您的cobol结构中有正确的十六进制值,我建议您打开ibm的问题单。cics不应该从http正文中去掉方括号。